我正在尝试使用如下代码的一部分来解析类似于此"2123123.12"
的字符串值
String stringAmount = "2123123.12";
float amount = Float.parseFloat(stringAmount);
但是当我看到下一个值时:
2123123.0
有什么想法吗。
提前谢谢。
发布于 2017-03-24 21:10:42
在Java
中,bit
只能存储32个浮点数。它将数字存储为符号(-/+)为1 bit
,指数为8 bits
,分数为23 bits
。
现在,看看你的数字并打印出小数部分,
System.out.println(Integer.toBinaryString(2123123));
结果是23 bit
,这意味着float
没有足够的位来存储小数部分,因此,它截断了数字。
要存储整数,您需要使用double
,它在Java中是64 bit
,例如:
String stringAmount = "2123123.12";
double amount = Double.parseDouble(stringAmount);
System.out.println(amount);
https://stackoverflow.com/questions/43008966
复制