【问题标题】:Convert String to Float preserving decimal places将字符串转换为保留小数位的浮点数
【发布时间】:2019-11-15 10:27:24
【问题描述】:

我有一些 Java 字符串格式为带有 4 位小数的巴西货币,例如:

1.000.000,0000 (1 million)
3,9590 (3 dollar and 9590 cents)
253,8999
10,0000

等等……

我想把它转换成浮点数,这样我就可以用它做一些数学运算了。

如何将字符串转换为保留 4 位小数的浮点数?我尝试了 Float.parseFloat() 方法,但我总是得到 NumberFormatException(可能是因为逗号)。

在网上搜索我只看到想要将 Float 转换为格式化字符串的人。

【问题讨论】:

  • 不要使用浮点数进行与金钱相关的计算stackoverflow.com/a/27598164/6207294
  • 为防止数字格式异常,可以将“,”替换为“.”和 ”。”和 ””。在将其解析为浮点数之前,这应该会给你一个适当的十进制格式的数字。
  • @ashish2199 请不要那样做,Java 中有很好的 API 可以正确处理数字格式(参见 my answer)。
  • Bigdecimal 用于重大决策

标签: java string


【解决方案1】:

使用NumberFormat.parse():

NumberFormat nf = NumberFormat.getNumberInstance();
float val = nf.parse("3,9590").floatValue();

您可以在获取实例时给它一个Locale,但默认将是您当前的语言环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-29
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多