Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
避免在Java Backingbean中尝试将字符串解析为浮点数时截断_Java_String_Parsing_Backing Beans - Fatal编程技术网

避免在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))

结果是23
bit
,这意味着
float
没有足够的位来存储分数部分,因此它会截断数字

要存储整数,您需要使用Java中的64位
double
,例如:

String stringAmount = "2123123.12";
double amount = Double.parseDouble(stringAmount);
System.out.println(amount);

不要使用
float
。它不能存储那么多精度的数字()。使用
double
可获得更高的精度(),但对于金额等值,您应该这样做。