在Java中从指数forms转换为十进制
我想将指数转换为十进制。 例如1.234E3
到1234
。
它不是真正的转换,而是关于如何显示数字。 您可以使用NumberFormat指定数字的显示方式。
检查区别:
double number = 100550000.75; NumberFormat formatter = new DecimalFormat("#0.00"); System.out.println(number); System.out.println(formatter.format(number));
BigDecimal.valueOf(doubleToFormat).toPlainString()
怎么样
在Java中使用双打和长数时,您将看到大多数值以指数forms显示。
例如:在下面我们将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());
结果:
- 2.85E-4
- 2.85E8
因此,您可以看到结果以指数格式打印。 现在,您可能希望以纯十进制格式显示结果,如: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());
结果:
- 0.000285
- 2.85亿
上述方法的唯一缺点是它会生成长串数。 您可能希望限制该值并将数字四舍五入为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
我刚尝试用一行压缩这段代码,它会打印带有两位小数的’a’值:
new DecimalFormat("0.00").format(BigDecimal.valueOf(a).toPlainString());
快乐转换:)
您可以使用DecimalFormat将其转换为String
@ b.roth的答案只有在国家特定的情况下才是正确的。 我使用了这个方法并得到了i18n问题,因为new DecimalFormat("#0.00)
取特定国家的小数分隔符。例如,如果一个国家使用十进制分隔作为”,“那么格式化的值将在0,00中(例如,1.2e2在某些地方将是120.00和120,00)在某些地方由于i18n问题如此处所述。
我喜欢的方法是`(new BigDecimal(“1.2e2”)。toPlainString())
只需将以下标记添加到jspx: –
String data = Long.toString((long) 3.42E8); System.out.println("**************"+data);
尝试以下方法
long l; double d; //It holds the double value.such as 1.234E3 l=Double.valueOf(time_d).longValue();
你得到变量l中的十进制值。
你可以做:
BigDecimal .valueOf(value) .setScale(decimalLimit, RoundingMode.HALF_UP) .toPlainString()