Java 将双精度转换为字符串值,保留每个数字
如何将例如9.01236789E9的10位双精度值转换为字符串9012367890而不终止其任何数字Java 将双精度转换为字符串值,保留每个数字,java,string,type-conversion,Java,String,Type Conversion,如何将例如9.01236789E9的10位双精度值转换为字符串9012367890而不终止其任何数字 我尝试了9.01236789E9*Math.pow(10,9),但结果仍然是双“9.01236789E18”虽然10个数字应该可以保存,没有问题,但如果您对实际使用的数字感兴趣,您可能应该改为使用BigDecimal 如果您真的想在不使用科学记数法的情况下格式化一个double,您应该能够使用NumberFormat来实现这一点,或者(从Java 6开始)使用简单的字符串格式化API: impo
我尝试了9.01236789E9*Math.pow(10,9),但结果仍然是双“9.01236789E18”虽然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
}
}
尝试String.format(“%20.0f”,9.01236789E9)
请注意,虽然它从来不是一个精确的值,但“保留每个数字”并没有真正意义。您可以使用它
double d = 9.01236789E9;
System.out.println(BigDecimal.valueOf(d).toPlainString());
String doubleString = Double.toString(inValue)
无效------>由您描述。要将double更改为字符串的位置。在这种情况下,您也可以这样做
double value = 9.01236789E9;
System.out.println((long) value); // prints 9012367890
可能有人对被称为极客很反感。你可能想演一个长角色。请参阅以获取解释谢谢Jon。这是非常有用的。谢谢王子。这也很有用。谢谢彼得。后来我意识到,简单地说.longValue()也可以。如果先创建一个
Double
,那么.longValue()就可以了。使用强制转换不需要对象。