避免截断尝试解析字符串以在 Java Backingbean 中浮动
Avoid truncate trying to parse string to float in Java Backingbean
我正在尝试使用像这样的部分代码
来解析像这样的字符串值 "2123123.12"
String stringAmount = "2123123.12";
float amount = Float.parseFloat(stringAmount);
但是当我看到值有下一个时:
2123123.0
有什么想法。
提前致谢。
在Java
中,float只能存储32个bit
个数。它将数字存储为 1 bit
作为符号 (-/+),8 bits
作为指数,23 bits
作为分数。
现在,查看您的号码并打印小数部分,
System.out.println(Integer.toBinaryString(2123123));
结果为 23 bit
,这意味着 float
没有足够的位来存储小数部分,因此它会截断数字。
要存储整数,需要使用double
,即Java中的64bit
,例如:
String stringAmount = "2123123.12";
double amount = Double.parseDouble(stringAmount);
System.out.println(amount);
我正在尝试使用像这样的部分代码
来解析像这样的字符串值"2123123.12"
String stringAmount = "2123123.12";
float amount = Float.parseFloat(stringAmount);
但是当我看到值有下一个时:
2123123.0
有什么想法。
提前致谢。
在Java
中,float只能存储32个bit
个数。它将数字存储为 1 bit
作为符号 (-/+),8 bits
作为指数,23 bits
作为分数。
现在,查看您的号码并打印小数部分,
System.out.println(Integer.toBinaryString(2123123));
结果为 23 bit
,这意味着 float
没有足够的位来存储小数部分,因此它会截断数字。
要存储整数,需要使用double
,即Java中的64bit
,例如:
String stringAmount = "2123123.12";
double amount = Double.parseDouble(stringAmount);
System.out.println(amount);