dongse7261 2013-09-28 17:20
浏览 42

PHP的基本乘法

Consider the below code in PHP

$a = 8425996523 * 121212713;
$b = sprintf('%.2f', $a);  
$mul = gmp_mul("8425996523", "121212713"); 

Output is

1.0213378982814E+18 
1021337898281396864.00 
1021337898281396899

The actual answer is 1021337898281396899. Hence, it is clear that we need to use any libraries like gmp_mul to do arithmetic with large numbers.

My question is, how to identify such errors? ie, when PHP does a calculation like

8425996523 * 121212713

, how can I identify that the result is not correct?

One way I see is to check for E and assume that whenever we forcefully convert such numbers, the errors exits.

  • 写回答

1条回答 默认 最新

  • doupo2633 2013-09-28 19:22
    关注

    Use

    $b = sprintf('%.2d', $a);
    

    Instead of

    $b = sprintf('%.2f', $a);
    

    Here's a screenshot of the source code to show the difference:


    enter image description here

    评论

报告相同问题?

悬赏问题

  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能