php 使用四捨五入、無條件進位、無條件捨去,處理方法
在php程式計算過程中,小數點的處理方式通常使用四捨五入、無條件進位、無條件捨去三種方式,round()、ceil()、floor()
但是php在無條件進位的時候出現了一個bug
不知道為什麼,112無條件進位之後,竟然變成了113,有可能是php的bug
所以保險的寫法應該要像下面這樣
$save_str=0;
$save_str=21*0.07; // 1.47
print ceil($save_str); // 無條件進位 2
print floor($save_str); // 無條件捨去 1
print round($save_str); // 四捨五入 1
$save_str=3200*2; // 6400
print ceil($save_str); // 無條件進位 6400
print floor($save_str); // 無條件捨去 6400
print round($save_str); // 四捨五入 6400
但是php在無條件進位的時候出現了一個bug
$save_str=3200*0.035; // 112
print ceil($save_str); // 無條件進位 113 這裡有問題
不知道為什麼,112無條件進位之後,竟然變成了113,有可能是php的bug
所以保險的寫法應該要像下面這樣
$save_str=3200*0.035; // 112
// 解決辦法
if(!is_int($save_str))
print ceil($save_str); // 有小數才無條件進位
else
print $save_str; // 整數不做進位 112