php - 关于sprintf截取小数问题
伊谢尔伦
伊谢尔伦 2017-04-10 17:23:23
0
1
787

问题:保留1位小数,不四舍五入,为整数时补0

很多人都说用sprintf('%.1f',$str);,但是取出来的结果还是有问题,
最后用这种方法解决:echo sprintf('%.1f', floor($str));

<?php
    $str1 = 12.34;
    $str2 = 12.35;
    $str3 = 12.36;
    echo sprintf('%.1f',$str1);//12.3
    echo sprintf('%.1f',$str2);//12.3
    echo sprintf('%.1f',$str3);//12.4
    
    echo sprintf('%.1f', floor($str3));//12.3
?>

不是说不四舍五入的吗?为什么按四舍五入,5却不入,6才入;
而其他函数number_format($str)都是在5就入了,这是为什么?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(1)
左手右手慢动作

自己实测了一下,目测是浮点数表示的精度问题

<?php
    echo sprintf('%.0f', 12.5); //12
    echo sprintf('%.0f', 15.5); //16
?>

参考

linux浮点数四舍五入还是五舍六入(浮点数的表示形式有关)

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!