0

我有一个将数字作为字符串输入的 api,我需要获取数字的浮点值。我目前使用 Float.ParseFloat 方法来获取我的字符串数字的浮点值。

根据Float.ParseFloat 的 java 文档,它没有提到输入大于 Float.MAX_VALUE 的任何内容。

我正在考虑这样做的一种方法是检查输入字符串的长度是否大于 Float.MAX_VALUE 的长度。

请建议我如何处理这个问题。

4

4 回答 4

1

尽管 javadoc 没有说清楚,但当我测试它时,一个太大的字符串的 parseFloat 只会产生一个“无穷大”的浮点数。您可以在创建后使用 isInfinite() 方法来检查值。

在这里使用 BigDecimal 之类的东西可能是一个更安全的选择,特别是如果您将对您的值执行任何算术运算。

于 2012-07-12T08:12:35.163 回答
1
  • 您可以使用更高的精度。尝试双精度或 BigDecimal。还有一些开放的任意精度库。
    • 在这里您可以找到每种 IEEE 754 格式可以容纳多少:http ://en.wikipedia.org/wiki/IEEE_754-2008 。浮动将接近 1.234567*10^38
  • 如果您无法正确解析它(例如,如果有效数字太多或指数太大:1.23456789012345e5000),您将无法将其保存在单精度浮点数中。
于 2012-07-12T08:08:57.747 回答
0

指数剪辑到最大指数值。请参阅来源,第 1197 行。

也许检查您的应用程序的一些最大有用价值?

于 2012-07-12T08:12:01.037 回答
0

如果数字太大,则结果将设置为 Float.POSITIVE_INFINITY,这是 IEEE FP 算术规则所要求的,并且如 10 秒测试所示。

于 2012-07-12T08:13:17.490 回答