C++、Cではdouble、floatタイプをint型に変換し、整列し、精度の問題を失う.
質問:C++では、double、floatタイプをintタイプに変換します.正確には、double、floatタイプを整列させると、次の問題が発生します.
コード:
結果:
理由:
dTemp 1は5.00000ですが、実際には4.999999かもしれません.もちろん整数部分を切り取ると、4になります.
解決方法:
double、floatタイプをCStringまたはstringタイプに変換し(これはあなたの速発環境によって異なります)、intタイプに変換します.ここではVC 6.0のMFCを列にします.
まとめ:
以上の方法で浮動小数点型データの整列精度の喪失問題を解決することができ、他の言語解決方法にも似ていますが、私もここでは解決策を提供しているだけです.
コード:
double dTemp1=1.0000;
double dTemp2=5.0000;
int iTemp1=(int)dTemp1;
int iTemp2=(int)dTemp2;
結果:
iTemp1=0;
iTemp2=4;
理由:
dTemp 1は5.00000ですが、実際には4.999999かもしれません.もちろん整数部分を切り取ると、4になります.
解決方法:
double、floatタイプをCStringまたはstringタイプに変換し(これはあなたの速発環境によって異なります)、intタイプに変換します.ここではVC 6.0のMFCを列にします.
double dTemp1=4.0000;
CString sTemp=_T("");
sDivisor.Format(_T("%0.4f"),dTemp1);
int iTemp1=atoi(sTemp);
まとめ:
以上の方法で浮動小数点型データの整列精度の喪失問題を解決することができ、他の言語解決方法にも似ていますが、私もここでは解決策を提供しているだけです.