1

これをスカラで試してください:

val value1 = -1.3323651E7f
val value2 = Math.round(value1)
val value3 = value1.toInt
val value4 = Math.round(value3)

value1: Float = -1.3323651E7
value2: Int = -13323650
value3: Int = -13323651
value4: Int = -13323650

と がとvalue2value4異なるのはなぜですか?value1value3

4

2 に答える 2

2

java.lang.Mathモジュールで答えを見つけました:

Math.round(a) = (int)Math.floor(a+0.5f)

さらに、浮動小数点変数を使った計算:

-1.3323651E7 + 0.5f = -1.3323650E7

0.5f は最初に 1f に丸められ、差に対応するためです。これが私の以前の問題の部分的な解決策です:

val value2 = Math.floor(value1 + 0.499f).toInt
value2: Int = -13323651
于 2013-04-11T12:24:55.363 に答える