Double 변수를 십진수로 캐스트
이것은 일부에게는 어리석은 질문처럼 보이지만 통화로 사용하려면 이중을 십진수로 캐스팅해야합니다. M은 어디로 갑니까?
decimal dtot = (decimal)(doubleTotal);
M
캐스트 할 때는 숫자 리터럴 에만 사용합니다 .
decimal dtot = (decimal)doubleTotal;
부동 소수점 숫자는 정확한 값을 유지하는 데 적합하지 않으므로 먼저 숫자를 더한 다음로 변환 Decimal
하면 반올림 오류가 발생할 수 있습니다. 숫자를 Decimal
더하기 전에 숫자를로 변환 하거나 처음에 숫자가 부동 소수점 숫자가 아닌지 확인할 수 있습니다.
다음과 같이 M
리터럴 접미사 없이 double을 십진수로 캐스트 할 수 있습니다 .
double dbl = 1.2345D;
decimal dec = (decimal) dbl;
M
새 리터럴 10 진수 값을 선언 할 때 다음을 사용해야합니다 .
decimal dec = 123.45M;
(이 없으면 M
123.45는 double로 처리되고 컴파일되지 않습니다.)
기본 변환 클래스 사용 : Convert.ToDecimal(Double)
Convert.ToDecimal(the double you are trying to convert);
음 이것은 오래된 질문이며 실제로 여기에 표시된 답변 중 일부를 사용했습니다. 그럼에도 불구하고 내 특정 시나리오에서는 double
변환하려는 값 decimal
이 decimal.MaxValue
. 그래서 예외를 처리하는 대신이 확장 메서드를 작성했습니다.
public static decimal ToDecimal(this double @double) =>
@double > (double) decimal.MaxValue ? decimal.MaxValue : (decimal) @double;
위의 접근 방식은 오버플로 예외 처리를 방해하지 않고 그러한 일이 발생하면 가능한 최대 값 (내 경우)을 유지하려는 경우에 작동하지만 다른 많은 시나리오에서는 이것이 예상되는 동작이 아님을 알고 있습니다. 예외 처리가 필요할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/6007159/cast-a-double-variable-to-decimal
'Development Tip' 카테고리의 다른 글
자바 제네릭 슈퍼 키워드 (0) | 2020.10.29 |
---|---|
Rspec 출력 형식 : 문서 (0) | 2020.10.29 |
메모장 ++에서 regexp 캡처 그룹을 바꾸시겠습니까? (0) | 2020.10.29 |
기능적 상태 비 저장 구성 요소의 PropTypes (0) | 2020.10.29 |
Java 클래스 용 인터페이스가 선호되는 이유는 무엇입니까? (0) | 2020.10.29 |