我们都知道处理浮点数可能会遇到这样的麻烦:
echo intval(0.58*100);//57使用bcmath函数会有所帮助:
echo bcmul('0.58', '100', 2);//58.00php手册:
//Multiply the left_operand by the right_operand.
string bcmul(string $left_operand , string $right_operand [, int $scale = 0 ])但是为什么这会起作用呢?
我注意到前两个参数应该是字符串,我想知道这是不是因为这些函数以字符串的方式处理数字?
发布于 2016-03-11 19:26:01
与bcmath一起使用的数字应该用字符串表示,因为如果你使用原生的php数字格式,比如整数或浮点数,那么你根本不能表达所有的值。
最简单的例子是整型。整数限制为常量PHP_INT_MAX定义的最大值。如果你想写下任何大于这个数字的数字,php将不能代表那个确切的数字。这是因为php使用预定义的内存量来存储整数。
请参阅此示例:
echo PHP_INT_MAX;
echo "\n";
echo PHP_INT_MAX + 1;输出为:
9223372036854775807
9.2233720368548E+18正如您所看到的,第二个值是,而不是 9223372036854775808,这可能是正确的,而是一些其他(类似)值。
https://stackoverflow.com/questions/35938737
复制相似问题