考虑下面的代码
$t = preg_replace('/0+$/','',".800000000000000"); //Replace last 0s
这给了我预期的 .8 输出
现在考虑以下代码
$a = .80;
$t = sprintf('%.15f', $a)."<br>";
echo "First : $t<br>";
$t = preg_replace('/0+$/','',$t);
echo "Second : $t <br>";
这给出了输出第一个 : 0.8000000000000000第二 :
0.8000000000000000你能帮我找出为什么在这种情况下最后的 0 没有被正则表达式替换,因为预期的输出是 0.8 ?
由于您要使用以下行将<br>
添加到$t
的末尾:
$t = sprintf('%.15f', $a)."<br>";
您的正则表达式不再匹配尾随 0。 "<br>"
演示文稿的一部分,您应该在最后添加它。
你在末尾附加一个 <br>
标签,而正则表达式在行尾之前说 0
'/0+$/'
^ <- end of line, nothing should come after 0's
".800000000000000"
$a = .80;
$t = sprintf('%.15f', $a)."<br>";
// $t = .800000000000000<br>
您的变量$t
包含0.800000000000000<br>
因此没有要切断的尾随零。
在追加 <br>
之前,您必须缩短字符串。