有人遇到过这种情况吗:
System.out.println("value of: " + Float.valueOf("3.0f")); // ok, prints 3.0
System.out.println(new BigDecimal("3.0f").floatValue()); // NumberFormatException
我认为这里缺乏一致性是一个错误,其中 BigDecimal(String) 不遵循与 Float.valueOf() 相同的规范(我检查了 JDK 文档)。
我正在使用一个库,它强制我通过 BigDecimal,但我可能必须在那里发送“3.0f”。是否有已知的解决方法(BigDecimal 在库中无法访问)。
最佳答案
第二个例子永远不会工作,因为 the documentation没有提及字符串中有关 f
的任何内容:
The String representation consists of an optional sign,
'+'
('\u002B'
) or'-'
('\u002D'
), followed by a sequence of zero or more decimal digits ("the integer"), optionally followed by a fraction, optionally followed by an exponent...
解决方法可以简单地从字符串中删除 f
。那么它应该是有效的。
关于java - BigDecimal.floatValue 与 Float.valueOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387011/