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>";

これにより、First : 0.800000000000000 Second : 0.800000000000000 として出力が得られます。

この場合、予想される出力が 0.8 であるため、最後の 0 が正規表現に置き換えられない理由を見つけるのを手伝ってもらえますか?

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 に答える