簡體   English   中英

PHP根據小數位數略微增加值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM