java - 如何判断以字符串表示的十进制数是否适合双精度数?
问题描述
我正在解析一个我知道包含数字的字符串值。
如果它只包含数字并且它在 Integer.MIN_VALUE 和 Integer.MAX_VALUE 之间,我将它解析为一个 int,类似地很长,否则我使用 BigInteger。
如果它包含一个十进制值,我想将其解析为双精度或 BigDecimal。
我可以测试字符串中的数值是否“适合”双精度数,因此可以安全地解析为双精度数,或者是否需要将其保存在 BigDecimal 中以防止精度损失?
解决方案
因此可以安全地解析为双精度数,或者是否需要将其保存在 BigDecimal 中以防止精度损失?
这不是您正在寻找的答案,但由于您似乎担心精度损失,您应该使用 aBigDecimal
代替 any double
。
该数字0.1
可以放在a 中double
,但并不精确(因为0.1
无法用二进制准确表示)。
请参阅:浮点数学是否损坏?
推荐阅读
- c++ - 避免将转换运算符复制到基类的子集
- python - pylint R1720: Unnecessary "elif" after "raise" (no-else-raise)
- windows-10 - 运行 datadog 命令时访问被拒绝
- java - 为什么`javac -cp`不需要`.`,而`java -cp`需要?
- ios - 当服务器远离时,AVPlayer 流式传输时间过长
- c# - CS0103 C# 当前上下文中不存在名称“ViewBag”和“Url”
- sql - 如何识别安装和删除应用程序的用户 - 如何在新架构中使用 UNNEST
- assembly - 如何在我的汇编代码的特定位置使用 INCLUDE 命令?
- java - 将 Spring Dispatcher Servlet 路径转换为 ZuulServlet
- bitbucket - 我们可以在 Bitbucket CI/CD 管道中配置审批流程吗