VictorLap/floatval

正确解析类似浮点数的字符串为浮点值

v0.1.1 2021-11-11 21:41 UTC

This package is auto-updated.

Last update: 2024-09-12 04:24:58 UTC


README

Latest Version on Packagist Software License Total Downloads

正确解析类似浮点数的字符串为浮点值。这个库基于最初来自http://codepad.org/hBpKZC5Ctofloat 函数。

安装

通过 Composer

$ composer require victorlap/floatval

使用方法

$float = Victorlap\Floatval::parse('123,456');

关于浮点数精度的警告

默认警告适用于使用浮点数。引用自 php.net

浮点数具有有限的精度。虽然它取决于系统,但 PHP 通常使用 IEEE 754 双精度格式,这将在大约 1.11e-16 的范围内由于舍入产生最大相对误差。非基本算术运算可能产生更大的误差,当然,在多个运算组合时必须考虑误差传播。

此外,像 0.10.7 这样的有理数,在十进制中可以精确表示为浮点数,但在内部使用的二进制中,不管尾数的大小,都没有精确的表示。因此,它们不能在不丢失精度的情况下转换为它们的内部二进制对应数。这可能导致令人困惑的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期的 8,因为内部表示可能是 7.9999999999999991118...

因此,永远不要相信浮点数结果的最后一位,也不要直接比较浮点数是否相等。如果需要更高的精度,可以提供任意精度数学函数gmp函数。

对于“简单”的解释,请参阅也称为“为什么我的数字相加不正确?”的》浮点指南

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

测试

$ composer test

贡献

有关详细信息,请参阅CONTRIBUTINGCODE_OF_CONDUCT

安全性

如果您发现任何与安全性相关的问题,请通过电子邮件victorlap@outlook.com联系,而不是使用问题跟踪器。

致谢

许可协议

MIT 许可协议 (MIT)。有关更多信息,请参阅许可文件