gpt4 book ai didi

delphi - 如何将 float 转换为具有 max 的字符串。 Delphi中的2位小数

转载 作者:行者123 更新时间:2023-12-03 15:51:26 25 4
gpt4 key购买 nike

Delphi7中如何将 float 转换为最多2位小数的字符串?

我尝试过使用:

 FloatToStrF(Query.FieldByName('Quantity').AsFloat, ffGeneral, 18, 2, FS);

但是通过上面的方法,有时会返回超过 2 个小数位,即。结果是:15,60000009

最佳答案

使用ffFixed而不是ffGeneral

ffGeneral 忽略 Decimal 参数。

当您使用ffGeneral时,18表示您需要18位有效十进制数字。然后,例程将以最短的方式表达该数字,必要时使用科学记数法。 2 被忽略。

当您使用ffFixed时,您是在说您希望小数点后有2位数字。

如果您想知道为什么有时会得到似乎不精确的值,可以在本网站和其他网站上找到很多内容来解释 float 的工作原理。

在本例中,AsFloat 返回一个 double,它与(大多数)其他浮点格式一样,以二进制形式存储其值。就像 1/3 不能用有限位数的十进制表示一样,15.6 也不能用有限位数的二进制表示。系统选择可以存储在double中的最接近的可能值。精确的十进制值是:

15.5999999999999996447286321199499070644378662109375

如果您要求 16 位精度,则该值将四舍五入为 15.6。但是您要求输入 18 位数字,因此您得到 15.5999999999999996。

关于delphi - 如何将 float 转换为具有 max 的字符串。 Delphi中的2位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51179472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com