gpt4 book ai didi

php - 如果处理 float 的钱很糟糕,那么为什么 money_format() 会这样做呢?

转载 作者:IT王子 更新时间:2023-10-28 23:53:36 25 4
gpt4 key购买 nike

我一直在思考如何在 PHP 中处理货币显示和数学运算,并且很长一段时间以来一直使用 DECIMAL 类型将其存储在 MySQL 中,并使用 money_format( ) 对其进行格式化以显示在网页上。然而,今天我看了一下实际的原型(prototype):

string money_format ( string $format , float $number )

我现在有点困惑。我被告知的是,避免为了钱而花车!但这里是基本的格式化函数(比如说快五倍),将输入转换为 float 。 number_format() 也是如此。

所以我的问题是:

  1. 除非我正在处理小数美分或数万亿美元(而且我都没有处理),否则我是否应该关心显示存储(但从不计算)被转换为 float 的货币?我是否会接近浮点不准确性改变我的数字的领域?

  2. 如果#1 的答案是我确实应该担心,那么为什么 money_format() 会以这种方式构建?

最佳答案

Unless I'm dealing with fractionalcents or trillions of dollars (and I'mdealing with neither), should I beconcerned at all about displaying andstoring (but never doing math on)currency that's been cast to a float?Will I ever come close to the area ofhaving floating point inaccuracieschange my figures?

对于纯粹的舍入/显示目的,只要绝对浮点表示误差小于 0.005 美元(这样四舍五入到最接近的分是正确的),您就是安全的。

使用 IEEE 754 单精度,您的安全最高可达 131,072.00 美元。 ($131,072.01 表示为 131072.015625,四舍五入不正确。)

double (PHP 的 float 使用)直到 $70,368,744,177,664.01(也有 .015625 美分)才会失败。您无需担心。

If the answer to #1 is that I shouldindeed be concerned, then why ismoney_format() built this way?

应该什么类型? PHP 没有内置的小数类型。许多其他语言也没有。

关于php - 如果处理 float 的钱很糟糕,那么为什么 money_format() 会这样做呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4662138/

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