PHP中的错误乘法

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP中的错误乘法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试对两个数字进行简单操作,但操作返回错误的结果.

例如,数字为46.29和10. $a变量中的第一个变量和$b变量中的第二个变量.

处理

echo $a * $b
echo 10 * 46.29
$a * 10

46.29 * $b
echo $a
echo $b
echo floatval($a) * floatval($b)
echo intval($a)

我也尝试使用bcmul,在这种情况下它将打印0.

在这里你可以找到我的代码

include 'simple_html_dom.PHP';

     $anno = $_POST['Anno'];
     $punti = $_POST['Punti'];
     $eta = $_POST['Eta'];
     $ggAss = $_POST['GgAss'];
     $ggParz1 = $_POST['GgParz1'];
     $ggParz2 = $_POST['GgParz2'];
     $ggParz3 = $_POST['GgParz3'];
     $pctDM = $_POST['PctDM'];
     $calcoloDM = $_POST['CalcoloDannoMorale'];
     $sPESEMediche = $_POST['SpeseMediche'];
     $spese = $_POST['Spese'];

    $htML = file_get_html('..\tabella'.$anno.'.PHP');

    $rows = $html->find('tr');

    // This VARiable is use to make sure that the correct number will be display. (there is a kind of offset in the output table).
    $const = 2;


    $i = 0;
    $cond = false;
    foreach ($rows as $row) {
        $j = 0;
        foreach ($row->children() as $cell) {
            if($cond)
                break;
            //This condITion is used to get punto base e indennità giornaliera
            if($i == 1) {
                $var1 = explode(" ",$cell->plaintext);
                $indennitaGG = $var1[10]; // here we can get indennità giornaliera
            }
            if($i == ($eta + $const) && $j == $punti) {
                $dannoBP = $cell->plaintext;
                $cond = true;
                break;
            }
            $j++;
        }
        $i++;
    }

    $calcIndGG = $indennitaGG * $ggAss;
    $newVar = $indennittaGG;
    echo 46.29 * 10;
    $calcIndParz1 = ($indennitaGG * 75 / 100) * $ggParz1;
    $calcIndParz2 = ($indennitaGG * 50 / 100) * $ggParz2;
    $calcIndParz3 = ($indennitaGG * 25 / 100) * $ggParz3;
    $dm = ($calcIndGG + $calcIndParz1 + $calcIndParz2 + $calcIndParz3) * $pctDM / 100;

    $totale = $dannoBP + $calcIndGG + $calcIndParz1 + $calcIndParz2 + $calcIndParz3 + $dm + $speseMediche + $spese;

这有什么问题?

编辑:
问题已解决代码

//This change is used to transform the variable $indennitaGG in the right form. (with the . and not with the,). Then we can make the cast to float.


    $temp = str_replace(",",".",$indennitaGG);
        $indennitaGG = (float)$temp;

解决方法@H_512_47@
该字符对浮点数无效.
尝试用str_replace(“,”,“.”,$a);替换它.如果你愿意,甚至可以尝试使用这两个数字.

官方”小数点分隔符(对于PHP)是一个点(.),这就是它无法进行乘法的原因.在您的语言中,它可能是逗号,但PHP使用点.

这就是PHP所说的(对于floatval($a)):

如果您使用此代码,它应该工作:

str_replace(",$a);
str_replace(",$b);
echo floatval($a) * floatval($b);

说明:

正如我所说,你使用的是十进制逗号,这是无效的. str_replace(原始,替换,主题)的作用是它在字符串(此处为:subject)中查找所有出现的原始内容,并将其替换为替换值.这导致用小数点替换该十进制逗号.

示例:40,3变为40.3

这仍然会导致String数据类型,这显然不是数字.要转换它,我们使用floatval(string)方法,它产生一个Float数据类型,它是浮点数的缩写,之后我们可以执行算运算.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP中的错误乘法全部内容,希望文章能够帮你解决PHP中的错误乘法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。