java - 在java中以一定精度显示 double

标签 java numbers double precision

我目前正在编写一个计算器应用程序。我知道 double 并不是良好数学的最佳选择。应用程序中的大多数函数都具有很高的精度,但有些函数不会得到非常难看的结果。我的解决方案是只向用户显示 12 位小数的精度。我选择 12 是因为我的最低精度来 self 的数值导出函数。

我遇到的问题是,如果我将其乘以定标器,然后四舍五入,然后除以定标器,则精度很可能会变得不正常。如果我使用 DecimalFormat,则无法仅显示 12 并正确显示代表科学记数法的 E,但如果不需要,则不会出现。

例如我想要

1.23456789111213 to be 1.234567891112

但从来没有

1.234567891112E0

但我也想要

1.23456789111213E23 to be 1.234567891112E23

所以基本上我想将数字字符串格式化为小数点后 12 位,保留科学记数法,但在不应该的时候不科学

最佳答案

使用String.format("%.12G", doubleVariable);

这就是如何使用 format() 以科学计数法显示值,但如果不需要,则不显示科学计数法。需要注意的是,“E”后面有一个“+”,因此您的结果将类似于 1.234567891112E+23

关于java - 在java中以一定精度显示 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5558870/

相关文章:

java - Neo4j HA(2.0-快照),等待集群选举master超时

algorithm - 币密集软处理舍入误差的常用策略?

javascript - 如何用js从1开始的范围内生成随机数?

ios - 将对齐数组 uint8[8] 转换为 double

c++ - 当给定相同的字符串输入时, `std::atof` 是否保证产生相同的输出?

java - 执行 native 代码的线程的正常关闭

java - isAnnotationPresent() 在 Java 中与父类(super class)型引用一起使用时返回 false

c# - 在 C# 的未知语言环境中解析 double

Java:我如何确定初始化 block 中定义的本地类是否需要一个封闭实例来实例化?

java - Java中数值对象之间的转换