在我的方形根和立方体打印后,我似乎无法摆脱小数?

时间:2013-09-02 08:23:22

标签: java decimal

在我简单的Java编写的程序中,我无法显示0-10的平方根和立方体数字的结果而不显示一个小数点?我怎么摆脱这个?

enter image description here

/*
 * 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);
        }
    }
}

4 个答案:

答案 0 :(得分:3)

解决此问题的一种非常简单的方法是将SquareCube的类型更改为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