我有一个将数字作为字符串输入的 api,我需要获取数字的浮点值。我目前使用 Float.ParseFloat 方法来获取我的字符串数字的浮点值。
根据Float.ParseFloat 的 java 文档,它没有提到输入大于 Float.MAX_VALUE 的任何内容。
我正在考虑这样做的一种方法是检查输入字符串的长度是否大于 Float.MAX_VALUE 的长度。
请建议我如何处理这个问题。
我有一个将数字作为字符串输入的 api,我需要获取数字的浮点值。我目前使用 Float.ParseFloat 方法来获取我的字符串数字的浮点值。
根据Float.ParseFloat 的 java 文档,它没有提到输入大于 Float.MAX_VALUE 的任何内容。
我正在考虑这样做的一种方法是检查输入字符串的长度是否大于 Float.MAX_VALUE 的长度。
请建议我如何处理这个问题。
尽管 javadoc 没有说清楚,但当我测试它时,一个太大的字符串的 parseFloat 只会产生一个“无穷大”的浮点数。您可以在创建后使用 isInfinite() 方法来检查值。
在这里使用 BigDecimal 之类的东西可能是一个更安全的选择,特别是如果您将对您的值执行任何算术运算。
指数剪辑到最大指数值。请参阅来源,第 1197 行。
也许检查您的应用程序的一些最大有用价值?
如果数字太大,则结果将设置为 Float.POSITIVE_INFINITY,这是 IEEE FP 算术规则所要求的,并且如 10 秒测试所示。