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; 解决方法
该字符对浮点数无效.
尝试用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数据类型,它是浮点数的缩写,之后我们可以执行算术运算. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |