void main()
{
uint32 Price = 0;
uint32 Money = 999990000;
Price = static_cast<uint32>(Money * 1.0f);
Price = ???
}
////////////////////////////////////////////////////
Price 같은 경우 999990000 가 나와야 이 코드를 짠 사람이 생각하는 정답이겠지만
실제로는 그렇게 값이 나오지 않을 것입니다.
저 같은 경우에는 999990016 이란 값으로 계속 나오더라구요.
DWORD rate = 1.0;
Price = static_cast<uint32>(Money * rate);
이렇게 바꾸게 되면 제대로 된 값이 나올 것입니다.
정수로 계산을 하면 정상적으로 나오지요.
이러한 꽁수로 해결할 수 도 있습니다.
double TempMoney = 0.0f;
if(Money != 0)
TempMoney = Money / 100;
Price = static_cast<uint32>(TempMoney * 1.0);
if(Money != 0)
{
Price *= 100;
Price += Money % 100;
}
값을 작게하여 정밀도를 높이는 방법 입니다.
값이 클수록 정밀도가 낮아지는 것 같네요.
사소한 실수지만 자잘하게 이상한 값이 나올 수 있으므로 프로그래밍 할 때 주의를
해야할 것 같습니다. 저도 이 부분 때문에 버그가 나버렸네요.
더 좋은 방법이 있다면 꼭 알려주세요.
IHG Points Purchase Promotion: 100% Bonus Points (Until June 29, 2024) 👍 Hello everyone 🖐️🖐️,…
Introduction to IHG Bonus Points Promotion Hello everyone! Today, I'd like to introduce you to…
Problem stdout: stderr: Downloading xxxx.a (83 MB) error: git-lfs smudge -- 'xxxx.a' died of signal…
https://www.playmobil.de/playmobil-xxl-weihnachtsmann/6629.html 구매가 : 48.49 유로 (플레이모빌 독일 홈페이지) 결제하는데 안되서 PayPal 로 결제하니 잘 잔행…
롯데온에서 355ml 24캔 롯데카드로 구매시 13,210원 https://www.lotteon.com/p/product/PD36294 APP으로 35,000원 이상 구매시 7,000 포인트 적립 행사…
구입 매장 : 현대 홈쇼핑 (홈쇼핑 방송 중) 모바일 앱 http://www.hyundaihmall.com/front/pda/itemPtc.do?slitmCd=2114353981 최종 결제 가격 :…