salesforce 零基礎學習(四十三)運算取餘

工做中遇到一個簡單的小問題,判斷兩個數是否整除,若是不整除,獲取相關的餘數。java

習慣java的我堅決果斷的寫下了代碼ide

public Boolean isDivisibility(Integer dividend,Integer divider) {
    return dividend % divider == 0;    
}

提交代碼發現居然提交不上??spa

後來查看API發現apex中沒有直接的%取餘運算,因此若是想要取餘以及判斷是否整除須要其餘方式,代碼以下:code

public without sharing class MathHelper {
    
    /*
        是否整除
        @param dividend 被除數
        @param divider  除數
        @return 整除返回true,不整除返回false
    */
    public static Boolean isDivisibility(Integer dividend,Integer divider) {
        //先將被除數轉換成Decimal,不然先計算整數除法結果爲Integer類型,而後將整數轉換成Decimal
        Decimal resultDecimal = Decimal.valueOf(dividend) / divider;
        //獲取結果上線
        Integer resultSeiling = Integer.valueOf(resultDecimal.round(System.RoundingMode.CEILING));
        Integer resultDown = Integer.valueOf(resultDecimal.round(System.RoundingMode.DOWN));
        
        return resultSeiling == resultDown;
    }
    
    /*
        獲取餘數
        @param dividend 被除數
        @param divider  除數
        @return 返回餘數
    */
    public static Integer getRemainder(Integer dividend,Integer divider) {
        Decimal resultDecimal = Decimal.valueOf(dividend) / divider;
        Integer resultDown = Integer.valueOf(resultDecimal.round(System.RoundingMode.DOWN));
        return dividend - resultDown * divider;
    } 
}

調用結果顯示:blog

經過上述代碼能夠看出,咱們運算的主要方式爲將被除數轉換成Decimal類型,除以除數獲得Decimal類型的餘數,經過取捨規則獲取他的上限值和下限值,若是上限和下限相等,則整除,不然不整除。ci

這裏咱們主要用到的是取捨模式System.RoundingMode包含如下經常使用的取值:文檔

UP:簡單的說,UP是對decimal值進行絕對值向上取,符號不變化。get

    1.    5.5經過RoundingMode.UP操做之後變成了6;it

    2.    -1.5經過RoundingMode.UP操做之後變成了-2;class

DOWN:簡單的說,DOWN是對decimal值進行絕對值向下取,符號不變化。

    1.    5.5經過RoundingMode.DOWN操做之後變成了5;

    2.    -1.5經過RoundingMode.DOWN操做之後變成了-1;

CELLING:對於正數,CELLING操做和UP操做相同,對於負數,操做和DOWN操做相同。

    1.    5.5經過RoundingMode.CELLING操做之後變成了6;

    2.    -1.5經過RoundingMode.CELLING操做之後變成了-1;

FLOOR:對於正數,FLOOR操做和DOWN操做相同,對於負數,操做和UP操做相同。

    1.    5.5經過RoundingMode.FLOOR操做之後變成了5;

    2.    -1.5經過RoundingMode.FLOOR操做之後變成了-2;

HALF_UP:小數點部分大於等於0.5,絕對值向上取,符號跟隨。

  1.    5.5經過RoundingMode.FLOOR操做之後變成了6;

    2.    5.1經過RoundingMode.FLOOR操做之後變成了5,由於0.1<0.5;

    3.    -1.5經過RoundingMode.FLOOR操做之後變成了-2;

    4.    -1.1經過RoundingMode.FLOOR操做之後變成了-1;

HALF_DOWN:小數點部分大於0.5,絕對值向上取,符號跟隨。

    1.    5.5經過RoundingMode.FLOOR操做之後變成了5;

    2.    5.7經過RoundingMode.FLOOR操做之後變成了6,由於0.7>0.5;

    3.    -1.5經過RoundingMode.FLOOR操做之後變成了-1;

    4.    -1.7經過RoundingMode.FLOOR操做之後變成了-2;

總結:本篇主要描述兩個整數是否整除而且獲取餘數的方法以及取捨模式的幾個值得概念以及定義,詳情瞭解請自行查看官方API文檔,有錯誤的地方歡迎指正,有問題歡迎留言。

相關文章
相關標籤/搜索