对不起我是java的新手,目前我想将值编码为下一千而不是最接近的千位。但我不知道该怎么做。我试过Math.round
,但这是最圆的。请指导我,任何帮助将不胜感激。
我正在寻找的预期输出:
example 1) if the place values less than 999, it will direct change to 1000
我可以知道如何为此编码数学公式?
答案 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);