java - BigDecimal.floatValue 与 Float.valueOf

标签 java

有人遇到过这种情况吗:

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/

相关文章:

java - 函数在 .clear() 之后返回空列表

java - 无法将 Kotlin 服务注入(inject) Java 类

java - 使用java解压文件

java堆栈跟踪的行号与hadoop lib不匹配

java - 有没有办法将一个 ArrayList 与另一个 ArrayList 建立一对多关系?

java - 如何取消正在运行的 SQL 查询?

java - 无法从 war 文件中的资源加载 xml

Javascript Eclipse 提案不显示 onclick

java - 平均/最小/最大方法在带有窗口生成器的 java eclipse 中不起作用

java - 如何将 Java EE 应用程序上的每个 HTTP 请求(路径、时间戳、用户名(如果可用))记录到数据库