数学演算によってbyte
からdouble
への変換を実行すると、予想通りの結果が得られました。 数値の変更を元に戻すために同じ数学演算を実行すると、double
タイプを保持している限り正しい値が得られます。 しかし、最後に、私は戻ってbyte
値に変換結果をdouble
結果を変換します。これは、一部だけbyte
値の場合の1ダブルからバイト型への変換エラー
で間違っています。
厳密なプロセス:
byte b = 82; Console.WriteLine(b); // initial byte value
double d = (b/100.0) + 2.00; Console.WriteLine(d); // 82/100 -> 0.82 + 2.00 -> 2.82 OK
double dt = d - 2.00; Console.WriteLine(dt); // 2.82 - 2.0 -> 0.82 OK
double db = dt * 100.0; Console.WriteLine(db); // 0.82 * 100 -> 82 (double) OK
byte dbb = (byte)db; Console.WriteLine(dbb); // (byte)82 -> 81 ERROR ERROR ERROR
b = Byte.Parse(db.ToString()); Console.WriteLine(b); // 82 -> "82" and to byte OK
は、なぜそれが起こっているのでしょうか? double
結果にはカンマの後に値がありません。
私はあなたにstackoverflowの別のトピックへのリンクを与えました - これはもう少し詳しく説明します - 小数は問題を解決します – TripleEEE