PHP分区浮点值解决方案

PHP分区浮点值解决方案,php,math,decimal,Php,Math,Decimal,请参阅: 关于这个问题,我编写了以下代码。这可以用不同的方式或更少的代码来完成吗 当两个给定值中的任何一个小于十进制值的1时,以下内容将有所帮助。这是一种好的做法吗 <?php $First_Value = 0.005; $Second_Value = 0.1; // Check the First Value for Decimal $First_Whole = floor($First_Value); // 0

请参阅:

关于这个问题,我编写了以下代码。这可以用不同的方式或更少的代码来完成吗

当两个给定值中的任何一个小于十进制值的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
?>

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

...
$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;

答案=.1818181…

如果您的所有值都限制为三位数,也许您可以将它们存储为整数。例如,不要使用“12.345美元”,而是使用“12345十分之一美分”。@Kevin它与其他货币计算不同?好的,那么重写所有其他货币计算函数,也使用十分之一美分。你是否引用了???这些值是动态的。因此,我们无法始终删除“0”。将.1除以.005时,没有余数。答案正好是20。现在,寄存器可能没有精确的0数字,因为极低的数字对芯片来说等于零。这就是为什么通常最好在if语句中找到一个小于1的零,除非解释器将为您这样做。检查参考链接,您能应用您的逻辑吗?更新了答案,这就是您要寻找的吗?