【发布时间】:2021-06-14 13:58:57
【问题描述】:
在JDK8中:
import java.math.BigDecimal;
public class HelloWorld{
public static void main(String []args){
Double aDouble=new Double(295699630);
System.out.println(BigDecimal.valueOf(aDouble.doubleValue()));
}
}
给出输出: 2.9569963E+8 。 数字以零结尾(如 295699630,848436700)带有符号 E。 但是如果数字以任何非零数字结尾,那么上面的代码 sn-p 会为我们提供所需的输出(数字如:295699631 将不包含'E' 转换后)。这是什么原因&我们如何在这种转换中避免科学记数法“E”?需要不带“E”记法的 BigDecimal 格式(非字符串)输出。 任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
What is reason of this原因是因为这就是制造商决定toString()函数的适当输出。how we can avoid scientic notation 'E' in this conversion正如下面提到的 Enak,有一个toPlainString()方法不使用指数形式。 -
感谢您的意见。但是我们需要数字格式而不是字符串格式的输出。 toPlainString() 方法返回字符串。
-
如果您正在寻找特定格式,请更新您的问题。在
System.out.println()语句中使用该值会隐含地告诉读者您需要String,因为这是打印语句通常使用的。 -
我认为您误解了
System.out.println()的作用。当给定一个对象作为参数时,该方法固有地使用对象toString()方法。如果您希望在使用System.out.println()显示其内容时使用不同格式的值,那么您需要使用不同的方法来格式化 Object 的String表示形式,在这种情况下为toPlainString()。
标签: java java-8 double bigdecimal