学习java,我有以下代码的意外输出:
int i = 1234567890;
float f = i;
int result = i - (int)f;
它被转回作为“结果”变量的值为-46,我期待0.0,相信“float f = i”将转换为1234567890.0而不是1.23456794E9。 试图理解它,我已经注意到,浮点类型最多只允许在小数点前7位数,并且,如果在小数点之前估算出一个多于7位的浮点数,编译器输出一个字符串即由该字符串的第二个索引位置处的小数点组成,并且在倒数第二个索引处,它返回“E”或“e”。 它是什么? “e”是什么意思?
答案 0 :(得分:6)
那是scientific notation,用E表示法。 E
代表 exponent 。
1.23456794E9
表示1.23456794×10 9 ,与1234567940相同。
float
类型的精度有限意味着该值与int
的值不完全相同。科学记数法用于显示大或小的值,它与精度的损失没有任何关系。