避免在Java Backingbean中尝试将字符串解析为浮点数时截断
我正试图使用这样一部分代码来解析这样的字符串值避免在Java Backingbean中尝试将字符串解析为浮点数时截断,java,string,parsing,backing-beans,Java,String,Parsing,Backing Beans,我正试图使用这样一部分代码来解析这样的字符串值“2123123.12” String stringAmount = "2123123.12"; float amount = Float.parseFloat(stringAmount); 但当我看到这个值时,会有下一个: 2123123.0 我不知道 提前感谢。在Java中,float只能存储32位的数字。它将数字存储为符号(-/+)的1位,指数的8位,分数的23位 现在,看看你的数字,把小数部分打印出来 System.out.println
“2123123.12”
String stringAmount = "2123123.12";
float amount = Float.parseFloat(stringAmount);
但当我看到这个值时,会有下一个:
2123123.0
我不知道
提前感谢。在
Java
中,float只能存储32位的数字。它将数字存储为符号(-/+)的1位,指数的8位,分数的23位
现在,看看你的数字,把小数部分打印出来
System.out.println(Integer.toBinaryString(2123123))代码>
结果是23bit
,这意味着float
没有足够的位来存储分数部分,因此它会截断数字
要存储整数,您需要使用Java中的64位double
,例如:
String stringAmount = "2123123.12";
double amount = Double.parseDouble(stringAmount);
System.out.println(amount);
不要使用float
。它不能存储那么多精度的数字()。使用double
可获得更高的精度(),但对于金额等值,您应该这样做。