在此代码中:
FormatFloat('0.##########',XX.AsFloat)
如果数据库中的值XX是12.12345,它将返回什么值?
#的数量超过5位小数,所以它会进行额外的舍入吗?
我找不到这个FormatFloat
的文档。
我也想知道.AsFloat
做了什么。
答案 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