在我简单的Java编写的程序中,我无法显示0-10的平方根和立方体数字的结果而不显示一个小数点?我怎么摆脱这个?
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package assignmenttwo;
/**
*
* @author JordanSimps
*/
public class AssignmentTwo {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
double Square;
double Cube;
for ( int Number = 0; Number <= 10; Number++ ) {
Square = Number * Number;
Cube = Number * Number * Number;
System.out.printf("%-10s %-10s %-10s\n", "Number", "Square", "Cube");
System.out.printf("%-10s %-10s %-10s\n", Number, Square, Cube);
}
}
}
答案 0 :(得分:3)
解决此问题的一种非常简单的方法是将Square
和Cube
的类型更改为int
而不是double
。 (但请确保您的结果始终是整数...)
您也可以使用DecimalFormat
对象,这很容易理解。
(它看起来也更像Java ......你的感觉有点像C。)
// this decimal format will display number after the dot only if there is.
// 1256.200 -> 1,256.2 whereas 152.0 -> 152
DecimalFormat df2 = new DecimalFormat( "###,##0.###" );
System.out.println("formated square : "+df2.format(Square));
按照您的示例编辑:
public static void main(String[] args) {
double Square;
double Cube;
DecimalFormat df2 = new DecimalFormat( "###,##0.###" );
for ( int Number = 0; Number <= 10; Number++ ) {
Square = Number * Number;
Cube = Number * Number * Number;
System.out.println("Number \tSquare \tCube");
System.out.println(Number + "\t" + df2.format(Square) + "\t" + df2.format(Cube));
}
}
一些澄清:
使用第一种方法更改程序 STORES 的方式,您的数据(您选择整数或双精度(双精度浮点数))。 在一种情况下,您的数据存储为整数,因此不能是十进制值,在另一种情况下,它接受十进制值。 现在它取决于你想要的...如果你确定没有十进制值将被添加到square和cube并且它们不会溢出整数类型(值&lt; 2 ^ 31)那么你可以使用第一种方法
使用第二种方法,您只是改变计算机显示号码的方式。 因此,您的数字始终存储为双精度浮点数,因此它可以接受更多值,并且您的程序将适合更多的用例。 当您想要向用户显示您的号码时,您可以告诉计算机(使用DecimalFormat对象)您希望如何执行此操作。 在我的例子中,我说只有在显示重要的数字时才需要小数点后面的3个数字。您可以查看更多详细信息here
答案 1 :(得分:2)
指定格式为%-10.0f
。小数点后面的部分允许您指定精度。
答案 2 :(得分:0)
将变量类型转换为Long
System.out.printf(“% - 10s%-10s%-10s \ n”,(长)数字,(长)方形,(长)立方体);
答案 3 :(得分:-1)
使用BigDecimal集将比例设置为0
BigDecimal a = new BigDecimal ("2.1");
a.setScale(0, BigDecimal.ROUND_HALF_EVEN).toString() // => 2