728x90
안녕하세요 
100.123456를 
100.12와 같이 소수둘째자리까지만 표현하고 그뒤로는 모두 버리려구 합니다. 

round함수를 이용해서 아래와 같이 하면 반올림은 되는데 
round(100.123456,2) 


floor(100.123456,2) 와같이 하였더니 에러나 나네요. 

검색을 해보니 버리는 함수는 없어서 별도로 모듈을 만들어야 한다는데 
사실인지요...... 
사실이라면 어떤식으로 구현해야할지 도움좀 부탁드려봅니다...
  • 답변채택율 100%
  • 추천 0
  • 비추천 0

전체댓글수 9

  • 기술레벨커뮤니티레벨higher 10-12-31 04:13 

    소스보기

  • <?php 
    $a=100.123456; 
    $b=sprintf("%.2f",$a); 
    echo $b; //100.12 
    ?>
  • 기술레벨커뮤니티레벨쥬리엘 10-12-31 09:17 

    소스보기

  • echo floor(100.123456 * 100) / 100; 
    or 
    echo intval(100.123456 * 100) / 100; 
    방법은 많지만 쓰기 나름이죠..
  • 기술레벨커뮤니티레벨가산 10-12-31 09:18 

    소스보기

  • numberformat($int,자리수);
  • 기술레벨커뮤니티레벨쥬리엘 10-12-31 09:20 

    소스보기

  • 오우.. number_format()의 파라미터가 꽤 있었네요.. 
    항상 콤마 찍을때만 써와서.. ㅎㅎ;;
  • 기술레벨커뮤니티레벨망망이 10-12-31 09:53 

    소스보기

  • 우엇 numberformat에 파라메터를 넣을수 있었다늬... 흑.
  • 기술레벨커뮤니티레벨뿔따구 작성자 10-12-31 11:49 

    소스보기

  • 많은 도움들 감사드립니다...새해 복많이 받으세요^^ 
    근데 테스트를 해보니 
    higher 과 가산님 답변 모두 해당자리에서 자동으로 반올림이 되어버리네요 
    100.777 로 테스트 해보면 100.78로 결과값이 나와버리네요... 
    주리엘님 답변같은경우는 정수값 100이 결과로 나와버리구요... 
    방법이 없지는 않을거 같은데 생각보다 까라로운가봐요 ㅠㅠ
  • 기술레벨커뮤니티레벨BiHon 10-12-31 14:50 

    소스보기

  • 쥬리엘님 답변대로 했는데 100이 나오던가요? 
    그리고 어떤 식으로 했기에 까다롭다는 것인지 모르겠네요. 
    아래는 다 같은 결과 내보냅니다. (방법이야 많지만 대충…) 

    echo floor(100.123456*100)/100; // 제일 간단 

    echo (int)(100.123456*100)/100; // 같은 결과 

    echo round(100.123456,2,PHP_ROUND_HALF_DOWN); // PHP 5.3.x 

    echo preg_replace('/(\d+\.\d{2})(\d*)/','\\1',100.123456); 

    echo substr(100.123456,0,strpos(100.123456,'.')+3); 

    echo reset($t=explode('.',100.123456)).'.'.substr($t[1],0,2); 

    echo implode('.',array_slice(($t=sscanf(100.123456,'%d.%2d%d')),0,2));
  • 기술레벨커뮤니티레벨쥬리엘 10-12-31 16:43 

    소스보기

  • 음.. 100이 나올리 없습니다. ㅎㅎ;; 
    어딘가 계산하는 부분을 잘못적으신듯합니다. 괄호하나 빠졌거나...;; ㅎㅎ;; 그럼 에러나겠지만...
  • 기술레벨커뮤니티레벨뿔따구 작성자 10-12-31 21:22 

    소스보기

  • 헐 역쉬 최고의 능력자 비혼님...알려주신 방법 모두 다시한번 테스트 해보겠습니다.... 
    쥬리엘님도 감사드려요..^^


+ Recent posts