如何检查双精度数最多是否具有n个小数位?

如何检查双精度数最多是否具有n个小数位?,第1张

如何检查双精度数最多是否具有n个小数位

测试失败,因为您已经达到了二进制浮点表示的精度,在IEEE754 double
precision的
情况下大约为16位。将649632196443.4279乘以10000将截断二进制表示形式,从而在随后舍入和除法时导致错误,从而使函数的结果完全无效。

有关更多详细信息,请参见http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

更好的方法是检查

n+1
小数位是否低于某个阈值。如果
d -round(d)
小于
epsilon
(请参阅limit),则的小数表示形式
d
没有有效的小数位。同样,如果
(d- round(d)) * 10^n
小于
epsilon
,则d最多可以有
n
重要位置。

使用Jon Skeet)的代码

DoubleConverter
来检查
d
是否不够精确,无法容纳您要查找的小数位。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5501889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存