私は PHP の ceil() 関数と格闘しており、結果が少し間違っています。次の点を考慮してください。
$num = 2.7*3; //float(8.1)
$num*=10; //float(81)
$num = ceil($num); //82, but shouldn't this be 81??
$num/=10; //float(8.2)
小数点以下の桁数が任意の数値があり、小数点以下 1 桁に切り上げる必要があります。つまり、8.1 は 8.1、8.154 は 8.2、8 は 8 のままにする必要があります。
私がそこにたどり着く方法は、数値を取り、10 を掛け、それを ceil() してから 10 で割ることですが、ご覧のとおり、状況によっては余分な .1 が追加されています。
なぜこれが起こっているのか、それを修正する方法を教えてもらえますか?
どんな助けでも大歓迎です
編集: *=10 の代わりに +=10 がありました:S
EDIT 2:これについては明示的に言及しませんでしたが、常に切り上げ、決して切り下げるには小数点が必要です-この答えはこれまでのところ最も近いです:
rtrim(rtrim(sprintf('%.1f', $num), '0'), '.');
ただし、3.9 が必要な場合は、3.84 を 3.8 に丸めます。申し訳ありませんが、これは明確ではありませんでした:(
最終編集:
私がやったことはこれでした:
$num = 2.7*3; //float(8.1)
$num*=10; //float(81)
$num = ceil(round($num, 2)); //81 :)
$num/=10; //float(8.1)
どちらが機能します:)