解决PHP的bcmul函数计算结果不对的问题
18-05-11 15:03
字数 462
阅读 9570
已编辑
计算100万分之1乘以100万,使用bcmul
函数。
var_dump(bcmul(0.000001, 1000000));
很简单的计算,结果应该是1,但是程序运行之后发现结果并不是1,而是0;
如果想得到正确的结果你可能需要这样处理一下。
var_dump(bcmul(sprintf('%.6f', 0.000001), 1000000));
先把浮点数格式化为带6位小数的字符串类型,然后才能得到正确的结果。
为什么呢?
通过官方文档你会发现bcmul
要的是两个字符串类型的参数。
于是尝试把浮点型转为string类型。
var_dump(bcmul((string)0.000001, (string)1000000));
但是你发现这并没有什么luan用,结果还是0。
最后
通过var_dump((string)0.000001);
你会发现得到的结果并不是 '0.000001' ,而是 '1.0E-6' 。
也许问题就出现在这里,所以需要用sprintf
函数先把浮点型的1.000000
转换为字符串的'1.000000'
,然后就能得到请正确的结果了。
2人点赞>
请登录后发表评论
相关推荐
文章归档
最新文章
最受欢迎
22-11-16 10:13
21-10-18 12:11
21-10-17 23:27
20-08-18 17:58
20-01-06 12:12
直接加个单引号就行了吧?