program tip

교리 2에서 소수 필드 유형을 지정할 때 스케일과 정밀도는 무엇을 의미합니까?

radiobox 2020. 12. 7. 08:02
반응형

교리 2에서 소수 필드 유형을 지정할 때 스케일과 정밀도는 무엇을 의미합니까?


Symfony2 응용 프로그램에 대해 Doctrine2에서 재무 수치를 유지하기 위해 소수점 필드를 만들고 있습니다.

현재는 다음과 같습니다.

/**
 * @ORM\Column(type="decimal")
 */
protected $rate;

값을 입력하고 값이 데이터베이스에 유지되었다고 말하면 정수로 반올림되었습니다. 필드에 대한 정밀도 및 배율 유형을 설정해야한다고 생각하지만 정확히 무엇을하는지 설명해 줄 사람이 필요합니까?

Doctrine2 문서는 말합니다 :

precision : 10 진수 (정확한 숫자) 열의 정밀도 (10 진수 열에 만 적용됨)

scale : 소수 (정확한 숫자) 열의 배율 (10 진수 열에 만 적용됨)

그러나 그것은 나에게 많은 것을 말하지 않습니다.

정밀도는 반올림 할 소수점 이하 자릿수라고 추측하고 있으므로 2가되어야한다고 가정하지만 스케일은 무엇입니까? 스케일이 유효 숫자입니까?

내 필드 선언이 이것이어야합니까? :-

/**
 * @ORM\Column(type="decimal", precision=2, scale=4)
 */
protected $rate;

Doctrine은 SQL 유형과 유사한 유형을 사용합니다. Decimal은 고정 정밀도 유형입니다 (부 동체와 달리).

MySQL 문서 에서 발췌 :

DECIMAL 열 선언에서 정밀도와 스케일은 지정 될 수 있습니다 (일반적으로 지정됨). 예를 들면 :

급여 DECIMAL (5,2)

이 예에서 5는 정밀도이고 2는 스케일입니다. 정밀도는 값에 대해 저장되는 유효 자릿수를 나타내고 스케일은 소수점 뒤에 저장할 수있는 자릿수를 나타냅니다.

표준 SQL에서는 DECIMAL (5,2)가 5 자리 숫자와 2 자리 소수로 모든 값을 저장할 수 있어야하므로 급여 열에 저장할 수있는 값의 범위는 -999.99에서 999.99입니다.


간단한 참고 사항 : 정밀도 및 배율 속성에서 따옴표를 제거해야했습니다.

@ORM\Column(type="decimal", precision=8, scale=2)

@Column(type="decimal", precision=5, scale=2) means 123.45

 * @ORM\Column(type="decimal", precision=10, scale=2)

참고 URL : https://stackoverflow.com/questions/14940574/what-do-scale-and-precision-mean-when-specifying-a-decimal-field-type-in-doctrin

반응형