3
Javaで倍精度を整数に変換する
Javaでは、doubleを整数に変換したいのですが、これを行うかどうかはわかります: double x = 1.5; int y = (int)x; y = 1になります。これを行う場合: int y = (int)Math.round(x); おそらく2になるでしょう。しかし、私は疑問に思っています。整数の二重表現は1.9999999998のように見える場合があるため、Math.round()を介して作成されたdoubleをキャストしても、数値が切り捨てられる可能性があります。私たちが探している丸められた数よりも(つまり:表現されたコードでは2ではなく1)? (そして、はい、私はそれ自体を意味します:xの値はありますか、yはxの丸められた表現ではなく切り捨てられた結果を示しますか?) もしそうなら:切り捨てのリスクを冒すことなくdoubleを丸められたintにするためのより良い方法はありますか? 何か考えました:Math.round(x)はdoubleではなくlongを返します。したがって、Math.round()が3.9999998のような数値を返すことは不可能です。したがって、int(Math.round())は何も切り捨てる必要がなく、常に機能します。