2016-05-10 14 views
-3

私はそのような愚かな質問を知っています。コードの仕組みを知りたいlongからfloatへの可逆変換が可能です

コード1:数123Lは、long型(8バイト)であるにもかかわらず、ここで

float a =123L; 

、およびフロート(4バイト)i「が可能な非可逆変換として、コンパイル時のエラーを得ることはありません「

コード2:ここでは

long c=123.0D; 

ダブル、long型が8つのバイトであっても、私はまだ取得 『』時エラーをコンパイル可能な非可逆変換を。

私は変数に格納されている値が両方の型互換性があると考えていました。

+2

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html – Blackbelt

+2

スタックオーバーフローへようこそ。新しい質問を書き込む前に、いくつかの先行研究を行うべきであることをご理解ください。そしてとりわけ...どんな「初心者」の質問でも...あなたは何度もここに何度も頼まれていることは間違いないでしょう。 – GhostCat

答えて

0
あなたは浮動小数点に例えば340Lを変換する場合、それは例えば339.999の代わりに、340

として表現される場合がありますので

浮動小数点データ型は、数自体とシステムに応じて、精密などの非常に近い近似値を表します

整数と浮動小数点は完全に異なって表現されているため、仮数を含む浮動小数点数とは異なり、整数が正確な数値を表すため、精度の低下を警告されています。