【Swift】 Decimal형 언더플로, 오버플로우
결론부터 쓰면
언더플로 → 갑자기 큰 값이 된다
오버플로 → NaN이 됨
빨리 언더 플로우를 일으켜 보자.
내부 10진수 계산의 Decimal형 변수에 0.02를 넣어 10회 곱하는 프로그램입니다.
import Foundation
var cur = Decimal(string:"0.02")!
cur *= cur
cur *= cur
cur *= cur
cur *= cur
cur *= cur
cur *= cur
cur *= cur
cur *= cur
cur *= cur
cur *= cur
결과는 다음과 같다.
스쿠쇼가 조금 보기 어렵기 때문에 결과를 쓰면 다음과 같다.
⓪0.02
①0.0004
②0.00000016
③0.0000000000000256
④0.000000000000000000000000000065536
⑤0.0000000000000000000000000000000000000000000000000000004294967296
⑥0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
⑦340282366920938463463374607431768211460
⑧1157920892373161954235709850086879078560000000000000000000000000000000000000
⑨13407807929942597099574024998205846128100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
⑩NaN
0
htps : // 코 m / 히로키 _ 카와 카미 / ms / 1867 A1 f91 5b90d61
위의 URL을 참고로 하면 Decimal형으로 언더플로우의 우려가 있는 경우는, 곱셈시에 양변의 절대치가 1 미만일 때 만약 대답의 절대치가 1 이상이 되는 경우는, 체크를 하는 것이 좋다 맞습니다.
Reference
이 문제에 관하여(【Swift】 Decimal형 언더플로, 오버플로우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nekomimimi/items/023ead6af27e57f95048텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)