• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:小数点の引き算が不正確)

小数点の引き算が不正確

このQ&Aのポイント
  • VB.NET 2008でFunctionプロシージャを作っています。Double型の値を与えると、その小数点第一位のみをInteger型で返すというものです。
  • しかし、39.9 - 39 の計算結果が0.9ではなく0.899999999999999になってしまいます。
  • なぜこのような不正確な演算結果になるのか、また別の方法はあるのかを教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

浮動小数点の演算による誤差でしょうね 小数第1位の数値を返すのなら Function SyosutenWoKaesu(ByVal NyuuryokuSuuchi As Double) As Integer   dim n as Integer   n = ( NyuuryokuSuuchi * 10 ) mod 10   return n End Function でうまくいきそうですが ・・・

suiyoudoudesyou
質問者

お礼

ご回答いただき、ありがとうございます!! やはり、小数点はどうしても誤差が出るようです。Single型にすると、いっそう誤差が大きいです。 で、ご回答いただいたコード・・・ 目から鱗でした! 無理に小数点演算をするんじゃなくて、いったん10倍して1のくらいにまで引き上げてから、1桁目を求めるとは・・・これはイイです!!! コードを書いてみましたが、やはり小数点の演算にならないので、問題なく動きました! ありがとうございました! 実際は、小数点第2位以下があることを考慮し、最後にFix関数で小数点をすべて切り捨て、整数だけにしてInteger型で返すようにすれば、問題となった誤差は一切発生せず、上手く動いています。 完全に解決しました。ありがとうございました!!!!

関連するQ&A