瓦尔 萨尔多:真实; A,B,C:真实; 开始 答:= 2580; B:= 188.9; C:= 2768.9; Saldo:= A+ B- C; ShowMessage(floattostr(Saldo)); // -8,5265128291212E -14 结尾; 由于某种原因,Delphi或Delphi ...

问题描述 投票:0回答:1
0
,但它产生的值非常不同。
这里发生了什么?

	
data类型
real
没有足够的精度来避免您的特定计算中的舍入误差。这就是为什么您获得非常接近零的值的原因,但结果却不为零。

使用数据类型

延伸

而不是
delphi floating-point
1个回答
-1
投票
numbers以二元为二元组存储。通常,十进制分数不可用为二元分数。从文本到二进制中解析代码中的数字时,将应用舍入。它可能会朝两个.9常数朝不同的方向进行,因此未取消舍入错误,但在差异中强调。

看浮点数的任何介绍,“相关”侧栏有一些著名的栏,例如floating-point数学损坏?

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.