【发布时间】:2013-05-23 20:09:47
【问题描述】:
令 N(x) 为有效数字最少的十进制数字的值
使得 x 是最接近数字值的double 值。
给定 double 值 a 和 b,我们如何计算最接近 N(b)-N(a) 的 double 值?
例如:
- 如果 a 和 b 是最接近 .2 和 .3 的
double值,- 所需的结果是最接近 0.1 的
double值,- 0.1000000000000000055511151231257827021181583404541015625,
- 而不是直接将a和b相减的结果,
- 0.09999999999999997779553950749686919152736663818359375。
- 所需的结果是最接近 0.1 的
【问题讨论】:
-
通过乘以除以 10 的幂转换为“整数”:
(10*.3 - 10*.2) / 10 == 0.1 -
@tom: 十的哪个幂?具体来说,给定 a 和 b,你如何计算使用 10 的哪个幂?
-
@EricPostpischil 也许转换为字符串并寻找最长的连续9或0序列???
标签: javascript floating-point double