0

考虑下面的代码

$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 吗?

4

3 回答 3

4

由于您要添加到此行<br>的末尾:$t

$t = sprintf('%.15f', $a)."<br>";

您的正则表达式不再匹配尾随 0。"<br>"是演示文稿的一部分,您应该在最后添加它。

于 2013-10-06T10:48:17.780 回答
3

<br>在末尾附加一个标签,而正则表达式在行尾之前表示 0

'/0+$/'
    ^ <- end of line, nothing should come after 0's
".800000000000000"

$a = .80;
$t = sprintf('%.15f', $a)."<br>";
// $t = .800000000000000<br>
于 2013-10-06T10:47:57.217 回答
1

你的变量$t包含0.800000000000000<br>所以没有尾随零要切断。

您必须在附加之前缩短字符串<br>

于 2013-10-06T10:48:55.443 回答