从十进制字符串中删除尾随零
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。
既然你提到你的数据总是“1”,这里有一个简单的方法:
$s = '0.00000100';
echo strstr($s, '1', true).'1';
注意:确保先将数据转换为字符串
如果您只是担心无法显示这些字符,为什么不 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
我有这些数字:
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。
既然你提到你的数据总是“1”,这里有一个简单的方法:
$s = '0.00000100';
echo strstr($s, '1', true).'1';
注意:确保先将数据转换为字符串
如果您只是担心无法显示这些字符,为什么不 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