如何将例如9.01236789E9的10位数的双精度值转换为字符串9012367890而不终止其任何数字?
我试过了9.01236789E9 * Math.pow(10,9),结果仍是双倍“9.01236789E18”
答案 0 :(得分:9)
double d = 9.01236789E9;
System.out.println(BigDecimal.valueOf(d).toPlainString());
答案 1 :(得分:7)
虽然10个数字应该可以保存而没有问题,但如果你对使用的实际数字感兴趣,你可能应该使用BigDecimal
代替。
如果确实想要在不使用科学记数法的情况下格式化double
,您应该只能使用NumberFormat
来执行此操作或(从Java 6开始)简单的字符串格式化API:
import java.text.*;
public class Test
{
public static void main(String[] args)
{
double value = 9.01236789E9;
String text = String.format("%.0f", value);
System.out.println(text); // 9012367890
NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(0);
format.setGroupingUsed(false);
System.out.println(format.format(value)); // 9012367890
}
}
答案 2 :(得分:0)
尝试String.format("%20.0f", 9.01236789E9)
注意虽然它从来都不是一个确切的值,但“保留每一个数字”并没有多大意义。
答案 3 :(得分:0)
你可以使用它。
String doubleString = Double.toString(inValue)
inValue ----->由您描述。您希望将double更改为字符串。
答案 4 :(得分:0)
在这种情况下,您也可以
double value = 9.01236789E9;
System.out.println((long) value); // prints 9012367890