Formatfloat如何工作?

时间:2011-05-19 19:01:21

标签: delphi floating-point format

在此代码中:

FormatFloat('0.##########',XX.AsFloat)

如果数据库中的值XX是12.12345,它将返回什么值? #的数量超过5位小数,所以它会进行额外的舍入吗? 我找不到这个FormatFloat的文档。

我也想知道.AsFloat做了什么。

1 个答案:

答案 0 :(得分:9)

当我运行它时,我会找到FormatFloat('0.###########',12.123456) = 12.123456。所以没有尾随空格,也没有额外的0。您不能将这一个案例推断为一般规则,因为有很多浮点值无法用二进制表示。所以一般的答案是你会得到一个数字,在十进制数的左边至少有一个数字,你将得到一个小数位和右边的可变小数位数,或者没有小数放在一起。

除了熟悉IEEE浮点编码以及二进制浮点数值存储的局限性之外,没有合理的方法来预测它。例如,尝试上面的1.0,你得到'1'并且没有小数位。

AsFloat是一个对象的方法,如果你想知道它是如何实现的,并且你没有告诉我们XX是什么类型,我们不能告诉你。但是你不需要问我们,你可以按Ctrl +点击它。

另一天,另一个推荐到What Every Computer Scientist Should Know About Floating-Point Arithmetic