PHP Division Float Value WorkAround

时间:2014-09-29 13:00:37

标签: php math decimal

请参阅:PHP Division Float Value Issue

参考问题我写了以下代码。这可以用不同的方式或更少的代码完成。?

当两个给定值中的任何一个小于 1 且带有十进制值时,以下内容将有所帮助。这是一个好习惯吗?

<?php

        $First_Value = 0.005;
        $Second_Value = 0.1;

        // Check the First Value for Decimal
        $First_Whole = floor($First_Value);  // 0
        $First_Fraction = $First_Value - $First_Whole; // .005

        // Check the Second Value for Decimal
        $Second_Whole = floor($Second_Value); // 0
        $Second_Fraction = $Second_Value - $Second_Whole; // .1

        // Multiply with 100 becaus ethe decimal is restricted to 3 digit so multiply with 100 works
        if(($First_Whole == 0) || ($Second_Whole == 0)){
            $First_Value = $First_Value*100; // 0.5
            $Second_Value = $Second_Value*100; // 10
        }

        echo $tableCount = $Second_Value / $First_Value; // 20
?>

1 个答案:

答案 0 :(得分:1)

您不需要进行任何计算。做最后一个部门。

...
$value1 = .005;
$value2 = .1;

echo $value1 / $value2;

结果为20

如果您只想获得2位小数,则可以在分割后使用数字格式。如果您在分割之前尝试格式化,那么您仍然可以编号格式。但是,如果不能那么为什么不将两个数字乘以1000(三位小数)%乘以1减去mod与实际的差值。在这种情况下,这将给你3,除以1000

[编辑]

获取余数做以下示例

...
$v = .0055;
$d = .1;

$a = $d/$v;
$s = $a % ceil($a);
$r = $a - $s;

answer = .18181818181818181 ...