dart vs java 나머지(%) 연산자 차이

ENOOSOFT·2022년 7월 1일
0

android(java) 앱을 flutter(dart) 로 리팩터링 하는 과정에서 알게된 나머지연산자의 차이를 공유합니다.
양의 정수의 나머지에서는 같은 결과가 나왔습니다. 문제는 음수 입니다.
음수를 나누어 나머지를 구할 때 java와 dart의 계산 결과가 다릅니다.
예를 들어 -11을 10으로 나눈 나머지는 무엇일까요?
java 는 -1 이 나왔고 dart 는 9 라고 답했습니다.

Java Online Test

    public static void main(String []args){
    int a = -11;
    int b = 10;
    System.out.println(a%b);
    }

Output 
-1

java 는 음수도 나머지를 구할때를 절대값으로 취급을 합니다. 11 % 10 과 동일한 결과가 나오죠.

DartPad Online Test

void main() {
    int a = -11;
    int b = 10;
    print('${a%b}');
}

Output 
9

dart 는 -11 % 10 의 나머지를 구할때 -20 으로부터의 나머지인 9 를 반환합니다.
어떤게 맞는지(일반적인지)는 모르겠지만 차이를 꼭 알고 사용해야 오류를 피할 수 있습니다.

아래는 테스트 화면 캡쳐입니다.

java

dart

끝.

profile
Tiny coder

0개의 댓글