Java BigDecimal.floatValue与Float.valueOf

Java BigDecimal.floatValue与Float.valueOf,java,Java,有没有人遇到过这样的情况: System.out.println("value of: " + Float.valueOf("3.0f")); // ok, prints 3.0 System.out.println(new BigDecimal("3.0f").floatValue()); // NumberFormatException 我认为这里缺乏一致性是一个bug,其中BigDecimalString与Float.valueOf的规范不同,我检查了JDK文档 我正在使用一个库,它强迫

有没有人遇到过这样的情况:

System.out.println("value of: " + Float.valueOf("3.0f")); // ok, prints 3.0
System.out.println(new BigDecimal("3.0f").floatValue()); // NumberFormatException
我认为这里缺乏一致性是一个bug,其中BigDecimalString与Float.valueOf的规范不同,我检查了JDK文档


我正在使用一个库,它强迫我通过BigDecimal,但我可能不得不在那里发送3.0f。是否有已知的解决方法BigDecimal在库中是不可访问的。

第二个示例永远不会起作用,因为它没有提到任何与字符串中的f有关的内容:

字符串表示法由可选符号“+”\u002B”或“-”\u002D”组成,后跟零位或多位十进制数字序列-整数,可选后跟分数,可选后跟指数


解决方法可以是简单地从字符串中去掉f。那么它应该是有效的。

第二个示例永远不会起作用,因为它没有在字符串中提到任何与f有关的内容:

字符串表示法由可选符号“+”\u002B”或“-”\u002D”组成,后跟零位或多位十进制数字序列-整数,可选后跟分数,可选后跟指数


解决方法可以是简单地从字符串中去掉f。它应该是有效的。

BigDecimal有自己的文档。依照

此构造函数与返回的值兼容 Float.toStringfloat和Double.toStringdouble


它没有提到任何关于Float.valueOf的内容

BigDecimal有自己的文档。依照

此构造函数与返回的值兼容 Float.toStringfloat和Double.toStringdouble


它没有提到任何关于Float.valueOf的内容

新的BigDecimalString不希望f出现在字符串中。理想情况下,也应该使用而不是构造函数。正如Ivan所说,你可以阅读它。新的BigDecimalString不希望f出现在字符串中。理想情况下,也应该使用而不是构造函数。正如Ivan所说,你可以阅读它是的。强制我检测并删除代码中的f。至少很烦人,是的。强制我检测并删除代码中的f。至少很烦人。