以下のコードを検討してください
$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 が正規表現に置き換えられない理由を見つけるのを手伝ってもらえますか?