在将float或double转型为整型值时,总是对该数字执行截尾,如下例:
- public class CastingNumbers{
- public static void main(String[] args){
- double above = 0.7,below = 0.4;
- float fabove = 0.7f, fbelow = 0.4f;
- System.out.println("(int)above: " + (int)above);
- System.out.println("(int)below: " + (int)below);
- System.out.println("(int)fabove: " + (int)fabove);
- System.out.println("(int)fbelow: " + (int)fbelow);
- }
- }
输出:
(int)above: 0 (int)below: 0 (int)fabove: 0 (int)fbelow: 0
如果想要得到舍入的结果,就需要使用java.lang.Math中的round()方法:
- public class RoundingNumbers{
- public static void main(String[] args){
- double above = 0.7,below = 0.4;
- float fabove = 0.7f, fbelow = 0.4f;
- System.out.println("Math.round(above): " + Math.round(above));
- System.out.println("Math.round(below): " + Math.round(below));
- System.out.println("Math.round(fabove): " + Math.round(fabove));
- System.out.println("Math.round(fbelow): " + Math.round(fbelow));
- }
- }
输出:
Math.round(above): 1 Math.round(below): 0 Math.round(fabove): 1 Math.round(fbelow): 0
由于round()是java.lang的一部分,因此在使用它事不需要额外的导入。
原文链接:http://www.cnblogs.com/eczhou/archive/2011/12/12/2284407.html
【编辑推荐】