美文网首页
Cast a double to an int and roun

Cast a double to an int and roun

作者: 成江 | 来源:发表于2018-03-12 21:51 被阅读1次

    Source:
    https://stackoverflow.com/questions/2143476/how-to-cast-a-double-to-an-int-in-java-by-rounding-it-down

    To cast a double to an int and have it be rounded to the nearest integer (i.e. unlike the typical (int)(1.8) and (int)(1.2), which will both "round down" towards 0 and return 1), simply add 0.5 to the double that you will typecast to an int.

    For example, if we have

    double a = 1.2;
    double b = 1.8;
    

    Then the following typecasting expressions for x and y and will return the rounded-down values (x = 1 and y = 1):

    int x = (int)(a);   // This equals (int)(1.2) --> 1
    int y = (int)(b);   // This equals (int)(1.8) --> 1
    

    But by adding 0.5 to each, we will obtain the rounded-to-closest-integer result that we may desire in some cases (x = 1 and 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
    

    As a small note, this method also allows you to control the threshold at which the double is rounded up or down upon (int) typecasting.

    (int)(a + 0.8);
    

    to typecast. This will only round up to (int)a + 1 whenever the decimal values are greater than or equal to 0.2. That is, by adding 0.8 to the double immediately before typecasting, 10.15 and 10.03 will be rounded down to 10 upon (int) typecasting, but 10.23 and 10.7 will be rounded up to 11.

    相关文章

      网友评论

          本文标题:Cast a double to an int and roun

          本文链接:https://www.haomeiwen.com/subject/saiofftx.html