使用/和%打印带有3个,2个和1个十进制空格的double

时间:2018-03-04 10:30:08

标签: java number-formatting

我有一个号码1349.9431。如何仅使用除法(/)和模数(%)运算符打印3位小数,2位小数和1位小数的数字?

每当我尝试划分或使用模数时,我会得到一些疯狂的数字:13499.430999999999

2 个答案:

答案 0 :(得分:1)

只有/运算符,到3个小数点:

double x = 1349.9431;
x /= 0.001;
long y = (long) y; // downcast to an integer
double z = (double) y / 1000;

System.out.println(threeDecimal);
// 1349.943

答案 1 :(得分:0)

嗯,由于double格式的局限性,这有点棘手,但我用它完成了它。请注意,这可能是不精确的。

public static void main(String[] args) {
    double d = 1349.9431;
    System.out.println(d);
    d /= 0.0001;
    System.out.println(d);
    int i = (int)d;
    System.out.println(i);
    i -= i % 100;
    System.out.println(i);
    d = i / 10000d;
    System.out.println(d);
}