入力を変更するライブラリがあります (入力に 1 つ以上の格納された変数を追加または乗算します)。これらの変数は float として格納されます。通常、入力も float ですが、int の場合もあります。この精度が気になります。
float GetValue(float input)
{
foreach (float modifier in various_data_sources)
{
if (isFactor)
input = input * modifier;
else
input = input + modifier;
}
return input;
}
void MainLogic()
{
int defaultValue = 3;
// If the modifier is 2 (add), I expect the final modified int to be 5:
DoSomeIntThing((int) GetValue(defaultValue));
}
これをより安全にするためにできることはありますか?値の変更は動的である必要があり、変更を整数演算と浮動小数点演算に分離すると混乱します。これは私が思うほど安全ではありませんか、それともこのような操作は(int)(2.0f+(float)3)
常に期待どおりの結果をもたらしますか?