>  Q&A  >  본문

MySQL 부동 소수점 정밀도 범위 및 반올림

黄舟黄舟2732일 전863

모든 응답(3)나는 대답할 것이다

  • 迷茫

    迷茫2017-05-18 10:53:23

    테이블을 생성할 때 f3을 float(6,2)로 지정했기 때문에 이 6과 2는 무엇을 의미하나요?
    6은 총 자릿수입니다. 2는 소수점 이하 2자리만 유지됨을 의미합니다. 그럼 9999.99로 표시되는데, 총 6개의 9가 있고 소수점 이하 2자리가 있습니다

    회신하다
    0
  • PHPz

    PHPz2017-05-18 10:53:23

    특히 금전 문제의 경우 십진수를 사용하는 것이 좋습니다. mysql에서 float 및 double(또는 실수)은 부동 소수점 숫자이고 십진수(또는 숫자)는 고정 소수점 숫자입니다.

    고정 소수점 숫자에 비해 부동 소수점 숫자의 장점은 길이가 확실할 때 부동 소수점 숫자가 더 큰 데이터 범위를 나타낼 수 있다는 것입니다. 단점은 정확성 문제를 일으킬 수 있다는 것입니다.

    향후 부동 소수점 숫자와 고정 소수점 숫자를 적용할 때 모든 사람은 다음 사항을 기억해야 합니다.

    1. 부동 소수점 숫자에 오류 문제가 있습니다.

    2. 통화와 같이 정확성에 민감한 데이터는 고정 소수점 숫자로 표시되거나 저장되어야 합니다.

    3. 프로그래밍에서 부동 소수점 숫자를 사용하는 경우 오류 문제에 특별한 주의를 기울여야 하며 부동 소수점 비교를 피해야 합니다.

    4. 부동 소수점 숫자의 일부 특수 값 처리에 주의하세요.

    http://blog.csdn.net/lingmao5...

    를 확인하실 수 있습니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-05-18 10:53:23

    float(m,d)에서 m은 전체 자릿수를 나타내고, d는 소수점 이하 자릿수를 나타냅니다float(m,d) 中,m 代表总位数, d 代表小数点右边的位数

    create table example3 (
        f1 float,
        f2 float(5,2),
        d1 double,
        d2 double(5,2)
    );
    
    insert into example3(f1, f2, d1, d2)
                values(3.141592657,3.141592657,3.141592657,3.141592657),
                      (3,3,3,3);

    显示如下:

    f1 f2 d1 d2
    3.14159 3.14 3.141592657 3.14
    3 3.00 3 3.00

    解释:

    • 不指定 m,d :按照 float 与 double 的范围来取值

    • 指定 m,d : 按照 m,d 으아악

      은 다음과 같이 표시됩니다:
    • <테이블> <머리> f1 f2 d1 d2 <본체> 3.14159 3.14 3.141592657 3.14 3 3.00 3 3.00
    설명: #🎜🎜#
    • #🎜🎜#m,d를 지정하지 않음: float 및 double의 범위에 따라 값을 취함#🎜🎜##🎜🎜#
    • #🎜🎜#m,d 지정: m,d 값에 따라 취합니다. 초과하는 경우 반올림됩니다. 초과하지 않으면 0이 추가됩니다. #🎜🎜##🎜 🎜# #🎜🎜#

      회신하다
      0
  • 취소회신하다