我的平方根和多维数据集打印后,似乎无法摆脱小数点?

在我用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);
        }
    }
}

解决方法:

解决此问题的一种非常简单的方法是将Square和Cube的类型更改为int而不是double. (但是请确保您的结果将始终是Integer …)

您还可以使用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,数据的方式(选择整数或双精度(双精度浮点数)).
在一种情况下,您的数据存储为整数,因此不能是十进制值,在另一种情况下,它接受十进制值.
现在,这取决于您要的内容…如果您确定不会将任何十进制值添加到正方形和立方体,并且它们不会溢出整数类型(值< 2 ^ 31),则可以使用第一种方法
>使用第二种方法,您只是在更改计算机的显示方式.
因此,您的数字始终存储为双精度浮点,因此它可以接受更多值,并且您的程序将适合更多的用例.
然后,当您想向用户显示您的号码时,您告诉计算机(使用DecimalFormat对象)要如何操作.
在我的示例中,我说过只有在要显示的有效位数小数点后才要3.您可以查看here的更多详细信息

恕我直言,我建议第二种方法.

上一篇:java-精确找到黄金比例直到小数点后20位


下一篇:是否可以在mysql中仅更改小数部分?