考虑以下代码
$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.800000000000000 第二:0.800000000000000
你能不能帮我找出为什么在这种情况下,正则表达式不能替换最后的0,因为预期的输出是0.8?
答案 0 :(得分:4)
由于您使用以下行将<br>
添加到$t
的末尾:
$t = sprintf('%.15f', $a)."<br>";
你的正则表达式不再匹配尾随0. "<br>"
是演示文稿的一部分,你应该在最后添加它。
答案 1 :(得分:3)
您在末尾添加了<br>
标记,而正则表达式在行结束前添加了0
'/0+$/'
^ <- end of line, nothing should come after 0's
".800000000000000"
$a = .80;
$t = sprintf('%.15f', $a)."<br>";
// $t = .800000000000000<br>
答案 2 :(得分:1)
您的变量$t
包含0.800000000000000<br>
,因此没有要删除的尾随零。
在追加<br>
之前,您必须缩短字符串。