java - 将 10 位字符串转换为浮点型

标签 java csv

我有一个来自 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/

相关文章:

java - Spring JPA添加自定义方法

java - 更新 smartsheet 中的单元格 (java)

python - 根据条件连接 csv 文件

python - 对列表的一列字符串进行操作

java - JCombobox模型如何使用?

java - 修改 getter 的结果会影响对象本身吗?

java - 除非 schema_version 表在数据库中,否则 Flyway 基线不起作用

python - 如何对 CSV 文件中的数据进行聚类(或分组)?

python - 如何将 spark 数据帧保存到 HDFS 上的 csv?

sql - Webmatrix csv 导入到 SQL Server Compact