我有一个来自 csv 文件中的记录之一的 10 位字符串,我需要将其转换为 float
并使用准备好的语句上传到 Oracle 表:
String s = '2788539392';
Float f = Float.parseFloat(s);
sql_statement.setFloat(1, f));
为什么它的值会改变:
csv : 2788539392
java: 2.78853939E9 (float)
oracle: 2788539390
有人知道如何使用 float 保留精确值吗?
最佳答案
float 是有限精度类型,这么大的数字会存在舍入误差。这是由于数字在浮点位中的表示方式所致(有关详细信息,请参阅@Lưu Vĩnh Phúc 的回答)。如果您需要保留精确值,请使用诸如 BigDecimal
之类的类型。
关于java - 将 10 位字符串转换为浮点型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28491685/