【问题标题】:Why subtraction doesn't work properly using bcmath?为什么使用 bcmath 减法不能正常工作?
【发布时间】:2011-09-28 01:30:02
【问题描述】:

假设我有

$foo = bcsub(bcdiv(1, 3, 20), 0.00001, 20);

它返回我 0.33333333333333333333

如果我有

$foo = bcsub(bcdiv(1, 3, 20), 0.0001, 20);

它返回我 0.33323333333333333332

如果我有

$foo = bcsub(0.333333333333333333, 0.00001, 20);

它返回 0.33333333333333331483

如果我有

$foo = bcsub(0.333333333333333333, 0.0001, 20);

它返回我 0.33323333333333331482

那么为什么它不能正确减去,它是浮点数?但是只要 bcdiv(1, 3, 20) 就可以正常工作

【问题讨论】:

    标签: php math bcmath


    【解决方案1】:

    使用字符串而不是浮点数作为 BC 函数的参数:

    $foo = bcsub(bcdiv("1", "3", "20"), "0.00001", "20");
    

    如果您使用浮点数(即 0.00001),PHP 会将此数字转换为浮点数,这是不精确的。如果您使用字符串(即“0.00001”),BC 将转换为任意精度数,这是精确的。

    【讨论】:

      猜你喜欢
      • 2020-03-28
      • 1970-01-01
      • 2016-07-16
      • 2019-01-04
      • 2020-09-03
      • 2016-10-10
      • 2016-10-24
      • 2017-02-27
      • 2017-07-08
      相关资源
      最近更新 更多