VictorLap / floatval
正确解析类似浮点数的字符串为浮点值
v0.1.1
2021-11-11 21:41 UTC
Requires
- php: ^7.2|^8.0
Requires (Dev)
- phpunit/phpunit: >=8.0
- squizlabs/php_codesniffer: ^3.0
README
正确解析类似浮点数的字符串为浮点值。这个库基于最初来自http://codepad.org/hBpKZC5C 的 tofloat
函数。
安装
通过 Composer
$ composer require victorlap/floatval
使用方法
$float = Victorlap\Floatval::parse('123,456');
关于浮点数精度的警告
默认警告适用于使用浮点数。引用自 php.net
浮点数具有有限的精度。虽然它取决于系统,但 PHP 通常使用 IEEE 754 双精度格式,这将在大约 1.11e-16 的范围内由于舍入产生最大相对误差。非基本算术运算可能产生更大的误差,当然,在多个运算组合时必须考虑误差传播。
此外,像
0.1
或0.7
这样的有理数,在十进制中可以精确表示为浮点数,但在内部使用的二进制中,不管尾数的大小,都没有精确的表示。因此,它们不能在不丢失精度的情况下转换为它们的内部二进制对应数。这可能导致令人困惑的结果:例如,floor((0.1+0.7)*10)
通常会返回7
而不是预期的 8,因为内部表示可能是7.9999999999999991118...
。因此,永远不要相信浮点数结果的最后一位,也不要直接比较浮点数是否相等。如果需要更高的精度,可以提供任意精度数学函数和gmp函数。
对于“简单”的解释,请参阅也称为“为什么我的数字相加不正确?”的》浮点指南。
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅CONTRIBUTING和CODE_OF_CONDUCT。
安全性
如果您发现任何与安全性相关的问题,请通过电子邮件victorlap@outlook.com联系,而不是使用问题跟踪器。
致谢
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅许可文件。