whdckstngh
1k
2018-02-22 11:20:47
8
3045

코딩하다충격먹었어요


${'40' gt '30'?'true':'false'} // true

위같이 두자리 숫자 비교할때 문자열로 받아도 비교가 되더군요

하지만,,

${'130' gt '30'?'true':'false'} // false

이렇게 자릿수가 틀린걸 문자열로 비교하면 안되더라고요..(당연한얘기지만...)


VO만들때 숫자가 확실한 데이터들도 String으로 선언된걸 많이 봤습니다..

오늘전까진 훌륭한 EL태그가 알아서 데이터형을 바꿔준다고 생각했었는데.. 아니더군요 ㅎㅎ

0
  • 댓글 8

  • ktsedd
    6k
    2018-02-22 11:31:04

    지레짐작의 무서움..

  • ercnam
    6k
    2018-02-22 11:50:18 작성 2018-02-22 12:00:37 수정됨

    저같은 경운 하도 자바스크립트에서 오래 놀다 JAVA로 오니까...

    리퀘스트에서 딴 IP주소를 지정된 문자열과 일치하는지 비교하는 IF문을

    if(request.remoteIP == "xxx.xxx.xxx.xxx"){

    }


    이렇게 짜놓고 자꾸 불일치가 떠가지고

    "아니 분명히 같은 아이피 맞는데 왜 자꾸 틀리다는거야!!!"

    짜증냈는데..

    알고보니 == 이 아니고 equals 로 비교해야 한다는걸 까먹었던 거였습니다 ....

  • ㅇㅈㅇ
    3k
    2018-02-22 12:51:08

    문자열과 숫자의 정렬방식이 달라요. 

    123 과 34는 숫자일때는 123이 뒤에 오지만

    문자일때는 34가 더 뒤에 옵니다.

    문자는 왼쪽으로 줄을 맞추고 크기계산하고 

    숫자는 오른쪽으로 줄을 맞추고 크기계산한다고 보시면 됩니다.

  • asd
    16k
    2018-02-22 13:28:23

    비교가 안되는게 아니고 숫자일때랑 문자열일때랑 비교방식이 달라요.

    젤 앞글자끼리 비교하고 그게 똑같으면 그 다음으로 넘어가는 방식이에요

    첫번째 비교도 '430' gt '30' 하면 true 나올거에요 4가 3보다 크니까요.


  • kenu
    52k
    2018-02-22 13:51:05

    'b' gt 'a'

    ascii code 번호로 비교할 겁니다.


  • 아스키
    10k
    2018-02-22 14:56:30

    문자형, 숫자형 데이타는 따로 있잖아요...멍충한 컴퓨터가 어떻게 알겠습니까..

    선언해줘야 알지..

  • whdckstngh
    1k
    2018-02-23 09:32:21

    허허..

    2년차인데 부끄럽네요 ㅎㅎㅎ(제가 코딩한건아니지만,,이제알았네요 -.-)


    한편으론.. 프로젝트에 이런 숫자형도 String으로 변수선언해서 set하는 경우가 많이 보이던데..

    회사 개발자들에게 이런 작은 부분 말해야하나 말아야하나 생각이드네요,,

  • 친절한춘향
    1k
    2018-02-26 13:44:31

    흠...한번쯤은 생각해볼 문제네요^^ 잘보고 갑니다.

  • 로그인을 하시면 댓글을 등록할 수 있습니다.