[英]PHP slightly increment value based on number of decimals
我試圖根據它具有的小數位數來稍微增加一個值。
例如,如果值是1.2,我會將其增加0.1、12.345增加0.001、12.345678增加0.000001,依此類推。
我目前有一個很長的實現,使用if,else if鏈。 我知道這不是最有效的方法,可以使用循環,但是我不確定如何構造循環。 我嘗試使用PHP substr_replace函數,但無法為此使用它。
有沒有其他方法可以構造循環以減少代碼行並提高效率?
到目前為止,這是我的PHP代碼:
$valueOne = 12.345678;
// get amount of decimals
$decimal = strlen(strrchr($valueOne, '.')) -1;
/*
this also works for finding how many decimals
$test = floatval($valueOne);
for ( $decimal_count = 0; $test != round($test, $decimal_count); $decimal_count++ );
echo $decimal_count;
*/
// see value before change
echo $valueOne;
if ($decimal == "1") {
$valueOne = $valueOne + 0.1;
}
else if ($decimal == "2") {
$valueOne = $valueOne + 0.01;
}
else if ($decimal == "3") {
$valueOne = $valueOne + 0.001;
}
// etc ...
// see value after change
echo $valueOne;
/*
i tried messing around with using a loop, but did not have much luck
$start = 0.1;
$count = 0;
$position = 2;
while ($count != $decimal) {
echo substr_replace($start, 0, $position, 0) . "<br />\n";
$count++;
//$position++;
}
*/
獲取小數位數
乘以適當的因數,所以數字現在是整數
遞增1
除以相同的系數即可返回原始數字(適當增加)
function increment($number){
// get amount of decimals
$decimal = strlen(strrchr($valueOne, '.')) -1;
$factor = pow(10,$decimal);
$incremented = (($factor * $number) + 1) / $factor;
return $incremented;
}
獲取小數點后的位數。 然后創建一個帶小數點的數字,少一個0
,后跟1
,以得到要加的數量。
$valueOne = 12.345678;
// get amount of decimals
$decimal = strlen(strrchr($valueOne, '.')) -1;
// see value before change
echo $valueOne . "<br>\n";
// Get amount to add
$increment = '.' . str_repeat('0', $decimal-1) . '1';
$valueOne += $increment;
echo $valueOne;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.