我正面临格式化双变量显示给用户的问题。该变量应该是一个双精度值,但在一些计算init之后,它会向包括E符号的用户显示。我如何从中删除E标志并只显示它是正常行为?格式化双变量
谢谢!
double formattedNumber = Double.parseDouble(new DecimalFormat("#############").format(myNum * calcal));
我正面临格式化双变量显示给用户的问题。该变量应该是一个双精度值,但在一些计算init之后,它会向包括E符号的用户显示。我如何从中删除E标志并只显示它是正常行为?格式化双变量
谢谢!
double formattedNumber = Double.parseDouble(new DecimalFormat("#############").format(myNum * calcal));
有多种方法可以将double值转换为文本表示。最简单的方法是使用字符串格式。考虑下面的单元测试:
@Test
public void test() {
System.out.format("%s%n", 1.12345e37);
System.out.format("%e%n", 1.12345e37);
System.out.format("%f%n", 1.12345e37);
System.out.format("%g%n", 1.12345e37);
System.out.format("%E%n", 1.12345e37);
System.out.format("%G%n", 1.12345e37);
}
在执行时将打印以下内容:
1.12345E37
1.123450e+37
11234500000000000000000000000000000000.000000
1.12345e+37
1.123450E+37
1.12345E+37
正如你所看到的,各种格式模式给出不同的结果。 %f变体给出了我所假设的答案。有关更多信息,请参阅String.format和Format String Syntax。
非常感谢Dennis ...它和我一起工作,但是我的号码中出现了6位数字的零。我怎样才能删除它们? –
你应该仔细阅读我的答案中的[Format String Syntax](http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax)链接,因为它是在那里详细解释。但是,使用'%.0f'而不是'%f'在小数点分隔符后不会给出任何数字(也可以去掉小数点分隔符)。 –
你为什么要执行一个计算,然后将结果转换为一个字符串,然后将字符串解析为一个double? – CommonsWare
我试图直接做myNum * calcal的总和,但它给了我一个错误。 –
@MohamedHemdan那么,你接下来尝试的不是解决方案。 –