Python3:从最左边舍入非常大的十进制数(十进制类型)

Python 3: Round very large decimal number (of decimal type) from far left

我正在使用原子钟,那里的频率大约为 10 MHz,精度超过 18 位。因此,对于某些 Python 应用程序,我需要减去列表的平均值并将其称为偏移量,以便我可以将 numpy 的 float64 用于此列表的元素。

我的问题如下:假设我有这个号码:

d = decimal.Decimal('12345678999999.555544333221')

我希望能够用这样的函数对这个数字进行四舍五入:

large_round(d,5)

并得到结果:

12345000000000.000000000000

所以我希望四舍五入从最左边开始,而不是从小数点开始。

我的解决办法:我可以像玩游戏一样把这个数字转成字符串,然后找小数点,然后数一数我还剩几位,然后加到标准Python round 函数的第二个参数。

但我总能在 Python 中找到我想象的所有功能。那么,是否有一种 Pythonic 友好的方式来完成我正在寻找的事情?

d2 = decimal.Context(prec=5).create_decimal(d)

创建一个具有所需精度的新上下文,并使用该上下文从 d.

创建一个新的 Decimal