python 高精度计算_Python和/或C/C++中的高精度算术?

摘要:哪种Python包或C-Library是高精度算术运算的最佳选择?

我有一些函数可以将小数天(0.0-0.99999 ..)转换为人类可读的格式(小时,分钟,秒;但更重要的是:毫秒,微秒,纳秒).

转换由以下功能完成:

(请注意,我还没有实施时区修正)

d = lambda x: decimal.Decimal(str(x))

cdef object fractional2hms(double fractional, double timezone):

cdef object total, hms, ms_mult

cdef int i

hms = [0,0,0,0,0,0]

ms_mult = (d(3600000000000), d(60000000000), d(1000000000), d(1000000), d(1000), d(1))

# hms = [0,0,0,0,0]

total = d(fractional) * d(86400000000000)

for i in range(len(ms_mult)):

hms[i] = (total - (total % ms_mult[i])) / ms_mult[i]

total = d(total % ms_mult[i])

return ([int(x) for x in hms])

分数:

def to_fractional(self):

output = (self.hour / d(24.0)) + (self.minute / d(1440.0))

output += (self.second / d(86400.0)) + (self.millisecond / d(86400000.0))

output += self.microsecond / d(86400000000.0)

output += self.nanosecond * (d(8.64) * d(10)**d(-9))

return output

然而,我来回转换的结果不准确:

jdatetime.DayTime.fromfractional(d(0.567784356873)).to_fractional()

Decimal('0.56779150214342592592592592592592592592592592592592592592592592592592592592592592592592592592592592592592592592592')

# Difference in-out: Decimal('0.000007145270')

当我更改d()以返回常规Python float时:

# Difference in-out: 7.1452704258900823e-06 (same)

因此,我的问题是:哪个Python包或C库能够更准确地执行此操作?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值