복붙노트

소수점 이하 2 자리까지 표시

PHP

소수점 이하 2 자리까지 표시

PHP 문자열을 소수점 둘째 자리로 반올림하는 올바른 방법은 무엇입니까?

$number = "520"; // It's a string from a DB

$formatted_number = round_to_2dp($number);

echo $formatted_number;

출력은 520.00이어야합니다.

round_to_2dp () 함수 정의는 어떻게해야합니까?

해결법

  1. ==============================

    1.

    number_format ()을 사용할 수 있습니다.

    return number_format((float)$number, 2, '.', '');
    

    예:

    $foo = "105";
    echo number_format((float)$foo, 2, '.', '');  // Outputs -> 105.00
    

    이 함수는 문자열을 반환합니다.

  2. ==============================

    2.

    또는,

    $padded = sprintf('%0.2f', $unpadded); // 520 -> 520.00
    
  3. ==============================

    3.

    round ()를 사용하십시오 (float 형식으로만 숫자를 예상 할 경우 사용, 그렇지 않으면 Codemwnci에서 주어진 대답으로 number_format () 사용).

    echo round(520.34345,2);    // 520.34
    
    echo round(520, 2);         // 520
    

    매뉴얼에서 :

    ...

  4. ==============================

    4.

    시험:

    $number = 1234545454; 
    echo  $english_format_number = number_format($number, 2); 
    

    출력은 다음과 같습니다.

    1,234,545,454.00
    
  5. ==============================

    5.

    http://php.net/manual/en/function.round.php

    e.

    echo round(5.045, 2);    // 5.05
    
    echo round(5.055, 2);    // 5.06
    
  6. ==============================

    6.

    PHP number_format () 함수를 사용하십시오.

  7. ==============================

    7.

    PHP printf 또는 sprintf 함수를 사용할 수 있습니다.

    sprintf 예제 :

    $num = 2.12;
    echo sprintf("%.3f",$num);
    

    echo를 사용하지 않고 동일하게 실행할 수 있습니다. 예 : sprintf ( "%. 3f", $ num);

    산출:

    2.120
    

    또는 printf를 사용하여 다음을 수행하십시오.

    echo printf("%.2f",$num);
    

    산출:

    2.124 
    
  8. ==============================

    8.

    이 문제를 해결하는 또 다른 이국적인 방법은 bcadd ()를 0의 $ right_operand에 더미 값과 함께 사용하는 것입니다.

    $formatted_number = bcadd($number, 0, 2);
    
  9. ==============================

    9.

    round_to_2dp는 사용자 정의 함수입니다. 함수의 선언을 게시하지 않으면 아무 것도 할 수 없습니다.

    그러나, 내 생각 엔이 number_format ($ number, 2);

  10. ==============================

    10.

    나는 내 것을 만든다.

    $decimals = 2;
    $number = 221.12345;
    $number = $number * pow(10,$decimals);
    $number = intval($number);
    $number = $number / pow(10,$decimals);
    
  11. ==============================

    11.

    $retailPrice = 5.989;
    echo number_format(floor($retailPrice*100)/100,2, '.', ''); 
    

    숫자를 반올림하지 않고 5.98을 반환합니다.

  12. ==============================

    12.

    bcdiv($number, 1, 2) //2 varies for digits after decimal
    

    소수점 이하 2 자리가 정확하게 표시됩니다.

    이점: 실수가 아닌 float 값 뒤에 두 자리를 표시하려면이 값을 사용하십시오.

  13. ==============================

    13.

    $number = sprintf('%0.2f', $numbers); // 520.89898989 -> 520.89
    

    그러면 10 진수 뒤에 2 자리 숫자가 생깁니다.

  14. ==============================

    14.

    전체 프로젝트에서 2 자리 10 진수를 사용하려면 정의 할 수 있습니다.

    bcscale(2);
    

    그러면 다음 함수가 원하는 결과를 생성합니다.

    $myvalue=10.165445;
    echo bcadd(0,$myvalue);
    //result=10.11
    

    하지만 bcscale 함수를 사용하지 않으면 다음과 같이 코드를 작성하여 원하는 결과를 얻을 수 있습니다.

      $myvalue=10.165445;
      echo bcadd(0,$myvalue,2);
     //result=10.11
    

    더 많은 것을 알기 위해서

  15. ==============================

    15.

    조건부 반올림을 위해 즉. 그렇지 않으면 실제로 필요한 소수점을 표시합니다. 정수

    123.56 => 12.56

    123.00 => 123

    $somenumber = 123.56;
    
    $somenumber = round($somenumber,2);
    
    if($somenumber == intval($somenumber))
    {
        $somenumber = intval($somenumber);
    }
    
    echo $somenumber; // 123.56
    
    
    $somenumber = 123.00;
    
    $somenumber = round($somenumber,2);
    
    if($somenumber == intval($somenumber))
    {
        $somenumber = intval($somenumber);
    }
    
    echo $somenumber; // 123    
    
  16. ==============================

    16.

    $twoDecNum = sprintf('%0.2f', round($number, 2));
    

    소수점 이하 반올림 한 후 소수점 이하 2 자리로 강제로 반올림하여 숫자를 올바르게 반올림합니다.

  17. ==============================

    17.

    PHP number_format () 함수를 사용하십시오. 예 :

    $num = 7234545423; 
    echo number_format($num, 2); 
    

    출력은 다음과 같습니다.

    7,234,545,423.00

  18. ==============================

    18.

    라운드없이 번호

    $double = '21.188624';
    echo intval($double).'.'.substr(end(explode('.',$double)),0,2);
    
  19. ==============================

    19.

    여기에서 나는 십진수 2를 얻는다. (점) 함수를 사용하여 ..

    function truncate_number( $number, $precision = 2) {
        // Zero causes issues, and no need to truncate
        if ( 0 == (int)$number ) {
            return $number;
        }
        // Are we negative?
        $negative = $number / abs($number);
        // Cast the number to a positive to solve rounding
        $number = abs($number);
        // Calculate precision number for dividing / multiplying
        $precision = pow(10, $precision);
        // Run the math, re-applying the negative value to ensure returns correctly negative / positive
        return floor( $number * $precision ) / $precision * $negative;
    }
    

    위 기능의 결과 :

    echo truncate_number(2.56789, 1); // 2.5
    echo truncate_number(2.56789);    // 2.56
    echo truncate_number(2.56789, 3); // 2.567
    
    echo truncate_number(-2.56789, 1); // -2.5
    echo truncate_number(-2.56789);    // -2.56
    echo truncate_number(-2.56789, 3); // -2.567
    

    새로운 정답

    PHP 기본 함수 bcdiv 사용

    echo bcdiv(2.56789, 1, 1);  // 2.5
    echo bcdiv(2.56789, 1, 2);  // 2.56
    echo bcdiv(2.56789, 1, 3);  // 2.567
    echo bcdiv(-2.56789, 1, 1); // -2.5
    echo bcdiv(-2.56789, 1, 2); // -2.56
    echo bcdiv(-2.56789, 1, 3); // -2.567
    
  20. ==============================

    20.

    PHP round () 함수를 사용할 수 있습니다.

    echo round(3.4);         // 3
    echo round(3.5);         // 4
    echo round(3.6);         // 4
    echo round(3.6, 0);      // 4
    echo round(1.95583, 2);  // 1.96
    echo round(1241757, -3); // 1242000
    echo round(5.045, 2);    // 5.05
    echo round(5.055, 2);    // 5.06
    
  21. from https://stackoverflow.com/questions/4483540/show-a-number-to-2-decimal-places by cc-by-sa and MIT lisence