4

モジュラス除算は整数のみを返しますか? フロートリターンが必要です。以下を参照してください。

var_dump(12 % 10); // returns 2, as expected
var_dump(11.5 % 10); // returns 1 instead of 1.5?
4

4 に答える 4

8

はい。演算子は%整数を返します。

浮動小数点の結果が必要な場合は、fmod()代わりに関数を使用してください。

于 2012-05-14T00:37:53.677 に答える
4

マニュアルを参照してください。

モジュラスのオペランドは、処理前に (小数部分を取り除くことによって) 整数に変換されます。

11.5 は 11 になります。

11 % 10 = 1 remainder **1**

あなたの解決策:fmod()tom_yes_tom が示唆するように。

于 2012-05-14T00:37:32.140 に答える
1

ドキュメントページの引用:

「モジュラスのオペランドは、処理前に (小数部分を取り除くことによって) 整数に変換されます。」

于 2012-05-14T00:41:12.473 に答える
0

これに対する回避策はありますか?

数学...

11.5 - floor(11.5 / 10) * 10 == 1.5

于 2012-05-14T00:41:15.550 に答える