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