我需要在Java中将double转换为int,但数值必须总是舍入。即99.99999999-> 99如何通过四舍五入将double转换为Java中的int值?
回答
投射到一个int将隐含地丢弃任何小数。无需调用Math.floor()(假设为正数)
只需使用(INT)类型转换,如:
System.out.println((int)(99.9999)); // Prints 99
话虽如此,但它从Math.floor
这轮负向调整有不同的行为无穷大(@克里斯黄)
请注意'Math.floor' *确实会产生一个与简单类型转换不同的结果。 – Joey 2010-01-26 23:40:42
这取决于OP的意思是“下舍入”。演员将它向下“向下”转向零,而Math.floor向负无穷转弯。 – 2011-12-15 03:24:38
另请注意,int不能表示double可能的所有可能的整数值。如果你想截断一个双精度值,然后像long一样强制转换为一个64位整数值。 'System.out.println((long)(9.9999e300));' – 2012-07-02 18:09:17
这工作得很好int i = (int) dbl;
(INT)99.99999
将是99铸造双为int不圆的,它会丢弃小数部分。
+1提截。 – 2012-07-02 18:09:10
蒙上了双为int,并将它四舍五入到最接近的整数(即不同于典型(int)(1.8)
和(int)(1.2)
,这都将“四舍五入”向0,回到1
) ,只需加上0.5到double
,你就可以输入int
。
例如,如果我们有X和Y
double a = 1.2;
double b = 1.8;
然后将下面的类型转换表达式和将返回四舍五入降值(x = 1
和y = 1
):
int x = (int)(a); // This equals (int)(1.2) --> 1
int y = (int)(b); // This equals (int)(1.8) --> 1
但通过添加0.5到每个,我们将获得四舍五入到最接近的整数结果,我们可能在某些情况下需要(x = 1
和y = 2
):
int x = (int)(a + 0.5); // This equals (int)(1.8) --> 1
int y = (int)(b + 0.5); // This equals (int)(2.3) --> 2
作为一个小纸条,这种方法也可以让你控制门槛在该double
被四舍五入后(int)
类型转换。
(int)(a + 0.8);
to typecast。每当十进制值大于或等于0.2时,这将只会加起来到(int)a + 1
。也就是说,通过在类型转换之前将double
加0.8,10.15和10.03将在类型转换为(int)
时舍入为10,但10.23和10.7将舍入到11。
你完全正确,但没有。我看到Google的“Java int typecast double”引发了这个线程,并且认为有人正在寻找一种直接使用(int)类型转换向上/向下舍入的方法,可以使用它。这不是使用一个计算器帐户发布的(所以我不想提高我的声誉,如果这在这里被认真对待),只是试图帮助传播我经常使用的一个很酷的技巧。 :)干杯! – JavaDrip 2012-07-02 18:23:07
不错,但请记住这只适用于**正**双打。例如,如果你用这个技巧取整-0.8,那么代码'System.out.println(“”+(int)( - 0.8d + 0.5))'打印0,而不是-1 – 2014-01-23 19:53:25
new Double(99.9999).intValue()
尝试用这个,这是一个简单的
double x= 20.22889909008;
int a = (int) x;
this will return a=20
或尝试用这样的: -
Double x = 20.22889909008;
Integer a = x.intValue();
this will return a=20
或与此尝试: -
double x= 20.22889909008;
System.out.println("===="+(int)x);
this will return ===20
可能是这些代码将帮你。
- 1. \(Double)四舍五入
- 2. C#将字符串转换为int(带四舍五入)
- 3. Java四舍五入
- 4. 如何避免条件中的double值四舍五入错误?
- 5. 这是将Double舍入四舍五入的好实现吗?
- 6. 四舍五入在Java中
- 7. 大双被四舍五入为int - C++
- 8. 四舍五入浮动为int
- 9. Java中如何将double转换为int?
- 10. 四舍五入双值在Java中
- 11. 四舍五入双值转换成Java的
- 12. 从float转换为int时,float结果如何四舍五入为整数?
- 13. 四舍五入的值列
- 14. Python的 - 通过四舍五入
- 15. 转换浮到int和的情况下,提高四舍五入
- 16. 将double转换为int(java)
- 17. 转换和四舍五入帮助
- 18. Java四舍五入问题
- 19. 四舍五入在JAVA
- 20. java四舍五入数
- 21. 如何四舍五入的价值?
- 22. Python的INT浮动四舍五入
- 23. 如何四舍五入
- 24. 如何四舍五入
- 25. SQL值四舍五入
- 26. sql四舍五入值
- 27. 大熊猫移将转换int类型为浮动并四舍五入
- 28. 如何四舍五入datetime64值
- 29. NSNumberFormatter在将NSDecimalNumber转换为NSString时四舍五入错误
- 30. printf四舍五入行为
可能的重复[如何将float转换为int与Java](http://stackoverflow.com/questions/1295424/how-to-convert-float-to-int-with-java) – 2015-01-26 12:50:04
我相信浮动而双打是Java中不同的数据类型。 – badpanda 2015-01-27 05:20:45
我认为它们太靠近了,因为它们都是基元和浮点类型。答案是一样的,很可能会继续如此。 – 2015-01-27 07:02:56