Java 没有 E 表示法的 Double 到 BigDecimal 的转换
Java Double to BigDecimal Conversion Without E Notation
在 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。 但是如果数字以任何非零数字结尾,那么上面的代码片段会给出我们想要的输出(数字如:295699631 不会转换后包含 'E')。这是什么原因 & 我们如何在这个转换中避免科学记数法 'E'? 需要以 BigDecimal 格式输出(不是字符串)没有 'E' 符号。
任何帮助将不胜感激。提前致谢。
看看 API。 BigDecimal
有一个 toPlainString
方法
Returns a string representation of this BigDecimal without an exponent field.
https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html#toPlainString--
在从 Double 到 BigDecimal 的转换过程中,我们可以使用 setScale 方法来避免使用科学记数法 'E'。请遵循以下代码片段:
import java.math.BigDecimal;
import org.apache.commons.lang3.math.NumberUtils;
public class test {
public static void main(String[] args) {
Double aDouble = NumberUtils.createDouble("345444330");
System.out.println(BigDecimal.valueOf(aDouble.doubleValue()));//Output:3.4544433E+8
BigDecimal b = new BigDecimal(aDouble).setScale(2);//Output:345444330.00
System.out.println(b);
}
}
在 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。 但是如果数字以任何非零数字结尾,那么上面的代码片段会给出我们想要的输出(数字如:295699631 不会转换后包含 'E')。这是什么原因 & 我们如何在这个转换中避免科学记数法 'E'? 需要以 BigDecimal 格式输出(不是字符串)没有 'E' 符号。 任何帮助将不胜感激。提前致谢。
看看 API。 BigDecimal
有一个 toPlainString
方法
Returns a string representation of this BigDecimal without an exponent field.
https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html#toPlainString--
在从 Double 到 BigDecimal 的转换过程中,我们可以使用 setScale 方法来避免使用科学记数法 'E'。请遵循以下代码片段:
import java.math.BigDecimal;
import org.apache.commons.lang3.math.NumberUtils;
public class test {
public static void main(String[] args) {
Double aDouble = NumberUtils.createDouble("345444330");
System.out.println(BigDecimal.valueOf(aDouble.doubleValue()));//Output:3.4544433E+8
BigDecimal b = new BigDecimal(aDouble).setScale(2);//Output:345444330.00
System.out.println(b);
}
}