如何处理大于Float.MAX_VALUE的值的浮点值输入

时间:2012-07-12 07:58:20

标签: java java-6

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

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

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

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

4 个答案:

答案 0 :(得分:1)

  • 您可以使用更高的精度。尝试double或BigDecimal。还有一些打开的任意精度库。
  • 如果您无法正确解析(例如,如果有效数字太多或指数太大:1.23456789012345e5000),您将无法将其保存在单个精确浮点数中。

答案 1 :(得分:1)

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

使用像BigDecimal这样的东西可能是一个更安全的选择,特别是如果你要对你的价值进行任何算术运算。

答案 2 :(得分:0)

指数剪辑到最大指数值。请参阅source第1197行。

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

答案 3 :(得分:0)

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