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())は何も切り捨てる必要がなく、常に機能します。