jstewmc / almost-equals
比较浮点数是否相等
v0.1.0
2017-03-06 00:23 UTC
Requires
- php: ^7.0
Requires (Dev)
- jstewmc/test-case: ^1.0
This package is auto-updated.
Last update: 2024-08-29 04:42:55 UTC
README
比较浮点数是否相等。
namespace Jstewmc\AlmostEquals; // instantiate the service $service = new AlmostEquals(); // compare stuff! $service(1/10, 0.1); // returns true (0.1 === 0.1) $service(2/10, 0.1); // returns false (0.2 !== 0.1)
由于浮点数在内部存储的方式,它们不应用于比较等价性。它们具有有限的精度,许多可以用十进制表示为浮点数的数字(例如,0.1
或 0.7
)在二进制中没有确切的表示。
Epsilon(ε,即epsilon,epsilon值)
为了测试浮点值是否相等,使用一个上限值来限制由于舍入造成的相对误差。这个值被称为机器epsilon,是计算中可以接受的最大的差值(不包括)。
在实例化服务时可以设置epsilon值。如果省略,默认为0.00001
。请注意,epsilon值应该与您比较的值的差异成比例。如果您的应用程序对非常小的差异很敏感,请使用一个非常小的epsilon。
namespace Jstewmc\AlmostEquals; // defaults to an epsilon of 0.00001 $service = new AlmostEquals(); $service(1/10, 0.1); // returns true $service(0.10002, 0.1); // returns false (0.00002 > 0.00001) $service(0.100002, 0.1); // returns true (0.000002 < 0.00001)
整数
为了提高易用性,此库还支持整数比较。在进行比较之前,它将使用PHP的默认类型强制转换为浮点数。
这就是全部内容!
作者
许可证
版本
0.1.0,2017年3月5日
- 首次发布