2016-03-23 23 views
0

C#アプリケーションにfloat Test = Convert.ToSingle((125 * 100)/149);行があります。私は結果として83.89を得ることを期待するが、私は下の図に見られるようにわずか83を得る。小数点以下の桁はどうなりますか?

さらに、MessageBox.Show(Test.ToString("0.00"));と言うと、Visual Studio 2015インスタンスがデバッグモードでクラッシュし、それ自体が再起動します。

理由は何でしょうか?浮動小数点数の小数点はどこですか?

enter image description here

+8

あなたは、整数演算を実行しています。あなたは整数だけを取得します。少なくとも1つの数値を浮動小数点数、つまり '(125.0 * 100)/ 149'に変更すると、' int'が浮動小数点に変換されます。 –

+0

@Glorin Oakenfootあなたは正しいです。私は浮動小数点がデフォルトのファーであると考えていました。 – Demir

答えて

0

おそらく、青のうち、これらの値を取得されていません。だから、(必要に応じてマジックナンバーを控えるためにいくつかのコメントを含む)、それらを宣言します

value = 125;   // Previously declared as float 
int factor = 100;  // Standard multiplier. 
int divisor = 149;  // Process factor. 
float test = Convert.ToSingle(value) * factor/divisor; 

// result: 83.89262 
関連する問題