价值到下一千而不是近千

时间:2014-10-17 09:45:06

标签: java

对不起我是java的新手,目前我想将值编码为下一千而不是最接近的千位。但我不知道该怎么做。我试过Math.round,但这是最圆的。请指导我,任何帮助将不胜感激。

我正在寻找的预期输出:

example 1) if the place values less than 999, it will direct change to 1000

我可以知道如何为此编码数学公式?

4 个答案:

答案 0 :(得分:11)

您可以使用Math.ceil

// A quick code example :)
int val = 1400;
val = (int) (Math.ceil(val / 1000.0) * 1000);

答案 1 :(得分:2)

此处请注意Math.ceil返回double,因此您应该正确使用它,如下所述,对于整数值,它将无法正常工作, 将执行整数除法。 < /强>

    double data = 1100;
    data = Math.ceil(data / 1000) * 1000;
    System.out.println(data);

<强> 输出

2000.0

答案 2 :(得分:1)

您需要编写一些自定义代码,如下所示

int leftdigit=value/1000;
int nextthousand=(leftdigit+1)*1000;

答案 3 :(得分:0)

从整数到浮点的转换会导致混乱,因为对于相同的位大小,浮点尾数的长度将始终小于整数大小(IEEE-754浮点尾数为23位,而整数为31位)。将大整数转换为来回浮动将不会在转换后得到相同的整数。

因此,这里使用az rest可能适用于整数或较小的long int,但对于较大的long值(63位)会中断。

最好使用以下代码(仅适用于> 0的值):

Math.ceil()

或长整数版本:

int ii = ((i - 1) / 1000 + 1) * 1000;

不会不必要地溢出,即使对于较大的值也可以保持精度,并且可能更快!


附录

例如,以下Java代码:

long ii = ((i - 1) / 1000 + 1) * 1000;

打印:

    int largeint = Integer.MAX_VALUE - 63;
    float fl = (float)largeint;
    int largeint2 = (int)fl;
    System.out.println(largeint);
    System.out.println(largeint2);