簡體   English   中英

從十進制字符串中刪除尾隨零

[英]Remove trailing zeros from decimal string

我有這些數字:

0.00000100
0.00100000
0.01000000
0.00001000

我想使用以下方法刪除不必要的十進制零:

$decimal_cutter = (float) $decimal_cutter;
echo sprintf('%f', $decimal_cutter) . '<br>';

它適用於一些數字,另一些產生此結果:

1.0E-6
0.001
0.01
1.0E-5

我想使用小數,而不是科學格式。

請注意,我也嘗試使用number_format() ,但請記住,通過設置小數點位數可以減少其余的數字。 我只想在1之后刪除0。

如果您只是擔心不顯示這些字符,為什么不簡單地trim它們呢?

您可以簡單地調用rtrim($yourNumber, '0')

例如:

$a = [];

$a[] = "0.00000100";
$a[] = "0.00100000";
$a[] = "0.01000000";
$a[] = "0.00001000";

foreach ($a as $b) {
    echo rtrim($b, '0'), "\n";
}

哪個輸出:

0.000001
0.001
0.01
0.00001

從邏輯上講,此方法要求您的任何十進制數字都不同於0 ,否則諸如2.0000的數字將顯示為2. ,這可能並不理想。

您可以使用preg_replace構建更通用的解決方案

$a = [];

$a[] = "0.00000100";
$a[] = "0.00100000";
$a[] = "0.01000000";
$a[] = "0.00001000";
$a[] = "2.00000000";
$a[] = "2.01011000";
$a[] = "0.00123000";

foreach ($a as $b) {
    echo preg_replace('|(?<!\.)0+$|', '', $b), "\n";
}

這將查找所有不帶句點的尾隨零,並輸出:

0.000001
0.001
0.01
0.00001
2.0
2.01011
0.00123

由於您提到的數據始終為“ 1”,因此這是一種簡單的方法:

$s = '0.00000100';
echo strstr($s, '1', true).'1';

注意:請確保先將數據轉換為字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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