有可能得到一个 "精确 "的数值吗? - 页 5

 
WePlexus:
是的,而且计算器说0.09*5=0.45。:)

只是需要规范化。

//double d=0.019999999999999999;
double d=NormalizeDouble(0.09*5,2);
double e=(int)(d*100)/100.0;
Print("e=",e);
 
abolk:

嗯,Sanyok,你是个骗子。

我的功能。

=0.44.
我没有检查你的)。
 
abolk:

正常化只是需要做的。

也是一种选择)))

这个数字是怎么回事?)))

0.01999999999999999999
 
sanyooooook:

也是一种选择)))

这个数字是怎么回事?)))

这是规范化工作的最大数字。

double d=NormalizeDouble(0.01999999,18);
double e=(int)(d*100)/100.0;
Print("e=",e);

如果你多拿一个9,它就会被规范为0.02。

 
abolk:

是发生归一化的最大数字。

如果你再吃一个9,它就会正常化为0.02。
不要切断它)。
 
sanyooooook:
不要截断数字)。
whatever --NormalizeDouble()的精度格式为0-8
 
abolk:
所以侧边 -- 在NormalizeDouble()中精度的格式 -- 0-8
所以它已经是侧面的了))
 
sanyooooook:
就这样,都是一样的))。

我们已经进入了 "问题的核心"--这就是为什么 "已经"

首先是问题的分解-- 然后是问题的组成

还是仍有一些未尽事宜?

 
abolk:

我们已经进入了 "问题的核心"--这就是为什么 "已经"

首先是问题的分解-- 然后是问题的组成

还是仍有一些无法解释的地方?

是的 )

如何使用同一个函数(比如,你写的那个)将任何输入的数字截断到合适的位数。

即使是这样。

0.01999999999999999999

或者这样。

0.09*5
 
sanyooooook:

是的 )

如何用同一函数将任何输入的数字截断到合适的位数。

即使是这样。

或者这样。

为了解决这个问题,0.09*5必须是=0.45,而不是=0.44999999999999999

如果不存在这样的东西,那么问题就无法解决。