亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

小于運算符在 PHP 中無法正常工作,而循環

小于運算符在 PHP 中無法正常工作,而循環

PHP
料青山看我應如是 2022-09-17 21:55:36
我正在嘗試根據每個積分的金額進行一些計算,以獲得所請求金額中使用的總積分。請參考以下代碼:<?php$amount_perpoints = bcdiv(622.9106666666667,1,2); // AMOUNT OF MONEY PER POINTS$request_amount = 3114.55; //REQUESTED AMOUNT OF POINTS$points = 0; // THIS WILL CONTAIN THE TOTAL POINTS$total_amount = 0; // THIS WILL INCREMENT ACCORDING TO THE PRODUCT OF THE CURRENT POINT AND AMOUNT PER POINTSwhile($total_amount < $request_amount){     $points = $points+0.50; //POINTS INCREMENTING BY 0.5    $total_amount = $points * $amount_perpoints;}echo $points;?>輸出:5.50上面的場景輸出,但我相信它應該只是.在迭代的點,并且 已經具有相同的值。為什么 while 循環仍然滿足比較變量的兩個值不小于但等于?5.505.005.00$total_amount$request_amount3114.55
查看完整描述

4 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

您正在比較浮點數。嘗試使用

while (bccomp($total_amount, $request_amount) === -1) {


查看完整回答
反對 回復 2022-09-17
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

使用小數分數作為浮點數進行計算時會發生錯誤。浮點數不能精確表示某些十進制數。僅使用 BC 數學函數進行此類計算。您也不需要循環。


$amount_perpoints = "622.91"; // AMOUNT OF MONEY PER POINTS

$request_amount = "3114.55"; //REQUESTED AMOUNT OF POINTS for result 5.0

//$request_amount = "3426.005"; //REQUESTED AMOUNT OF POINTS for result 5.5


$point_step = "0.50";


//calculation

$points = bcdiv($request_amount,$point_step,2);

$points = bcdiv($points,$amount_perpoints,0);

$points = bcmul($points,$point_step,1);


//output

var_dump($points);  //string(3) "5.0"


查看完整回答
反對 回復 2022-09-17
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

<?php

$amount_perpoints = bcdiv(622.9106666666667,1,2); // AMOUNT OF MONEY PER POINTS

$request_amount = 3114.55; //REQUESTED AMOUNT OF POINTS


$points = 0; // THIS WILL CONTAIN THE TOTAL POINTS

$new_points=0;

$total_amount = 0; // THIS WILL INCREMENT ACCORDING TO THE PRODUCT OF THE CURRENT POINT AND AMOUNT PER POINTS


while($total_amount < $request_amount){

    $points=$new_points;

    $new_points = $new_points+0.50; //POINTS INCREMENTING BY 0.5

    $total_amount = $new_points * $amount_perpoints;

}


echo $points;


?>


查看完整回答
反對 回復 2022-09-17
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

我認為@jeff是對的:


 $amount_perpoints = bcdiv(622.9106666666667,1,2); // AMOUNT OF MONEY PER POINTS

    $request_amount = 3114.55; //REQUESTED AMOUNT OF POINTS


    $points = 0; // THIS WILL CONTAIN THE TOTAL POINTS

    $total_amount = 0; // THIS WILL INCREMENT ACCORDING TO THE PRODUCT OF THE CURRENT POINT AND AMOUNT PER POINTS


    while($total_amount <= $request_amount){ 

        $points = $points+0.50; //POINTS INCREMENTING BY 0.5

        $total_amount = $points * $amount_perpoints;

    }


    echo $points;

由于你數到它達到期望的點,它的靈魂是少或等于。它給出的輸出為 : 5.5


查看完整回答
反對 回復 2022-09-17
  • 4 回答
  • 0 關注
  • 169 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號