我想将指数转换为十进制。例如1.234E3
至1234
。
答案 0 :(得分:15)
这不是真正的转化,而是关于您显示数字的方式。您可以使用NumberFormat指定数字的显示方式。
检查区别:
double number = 100550000.75;
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(number);
System.out.println(formatter.format(number));
答案 1 :(得分:11)
BigDecimal.valueOf(doubleToFormat).toPlainString()
答案 2 :(得分:1)
在Java中使用双打和长数时,您将看到大部分值都以指数形式显示。
例如:在下面我们将2.35乘以10000并打印结果。
//Division example
Double a = 2.85d / 10000;
System.out.println("1. " + a.doubleValue());
//Multiplication example
a = 2.85d * 100000000;
System.out.println("2. " + a.doubleValue());
<强>结果:强>
因此,您可以看到结果以指数格式打印。现在,您可能希望以纯十进制格式显示结果,如:0.000285或285000000.您只需使用类java.math.BigDecimal
即可。在下面的示例中,我们使用BigDecimal.valueOf()
将Double值转换为BigDecimal
而不是.toPlainString()
,以将其转换为纯十进制字符串。
import java.math.BigDecimal;
//..
//..
//Division example
Double a = 2.85d / 10000;
System.out.println("1. " + BigDecimal.valueOf(a).toPlainString());
//Multiplication example
a = 2.85d * 100000000;
System.out.println("2. " + BigDecimal.valueOf(a).toPlainString());
<强>结果:强>
上述方法的唯一缺点是它会生成长串数。您可能希望限制该值并将数字四舍五入为5或6小数点。为此,您可以使用java.text.DecimalFormat
课程。在下面的示例中,我们将数字四舍五入为4小数点并打印输出。
import java.text.DecimalFormat;
//..
//..
Double a = 2.85d / 10000;
DecimalFormat formatter = new DecimalFormat("0.0000");
System.out.println(formatter .format(a));
<强>结果:强>
0.0003
我刚尝试用一行压缩这段代码,它会打印出&#39; a&#39;有两个小数位:
new DecimalFormat("0.00").format(BigDecimal.valueOf(a).toPlainString());
快乐转换:)
答案 3 :(得分:0)
你可以使用它将它变成一个String DecimalFormat
答案 4 :(得分:0)
@ b.roth的答案只有在特定国家/地区时才是正确的。我使用了这个方法并得到了i18n问题,因为new DecimalFormat("#0.00)
采用了特定国家/地区的小数分隔符。例如,如果一个国家使用十进制分隔作为“,”,那么格式化的值将在某些地方的0,00(例如1.2e2将在某些地方120.00和120,00)由于i18n问题所述{ {3}} ..
我喜欢的方法是`(new BigDecimal(“1.2e2”)。toPlainString())
答案 5 :(得分:0)
只需将以下标记添加到jspx: -
<f:convertNumber maxFractionDigits="4" minFractionDigits="2" groupingUsed="false"/>
答案 6 :(得分:0)
String data = Long.toString((long) 3.42E8);
System.out.println("**************"+data);
答案 7 :(得分:0)
尝试以下
long l;
double d; //It holds the double value.such as 1.234E3
l=Double.valueOf(time_d).longValue();
你在变量l。
中得到十进制值答案 8 :(得分:0)
你可以这样做:
BigDecimal
.valueOf(value)
.setScale(decimalLimit, RoundingMode.HALF_UP)
.toPlainString()