选择一个依赖于布尔值的因子 c#

Choose a factor dependant on a boolean value c#

Boolean Multiplier;
double Number;
double Value;
string Text;
Text = (Value * (1 + (Convert.ToInt32(Multiplier) / 2)).ToString(".0##");

这是我已经抽象为一般行为的当前代码,如果 Multiplier 为真,则 Value 的预期行为乘以 1.5,如果 Multiplier 为假,则 Value 保持不变。

然而,这个人没有工作,虽然它没有划分,但我认为这与浮点数没有正确显示有关。所以我想问问我是否可以使用枚举之类的东西,我有两个值,其中一个值的选择取决于布尔值是真还是假。其他方法以及关于格式化小数的建议都很受欢迎,因为我很新。如果这已经记录在某处,那么很抱歉,但我没有找到它:(

您可以只使用 if 语句:

double val = Value;
if( Multiplier )
{
   val = val * 1.5;
}
Text = val.ToString( ".0##" );

您不应该(恕我直言)不要使用从 boolean 到 int(或任何其他类型)的转换。它依赖于转换规则的默认知识 and/or 查找文档。

您的要求是:

Text is Value multiplied by 1.5 if Multiplier is true and Value staying the same if Multiplier is false, converted to a string.

那么为什么不使用标准的三元运算符以这种方式编码:

Text = (Multiplier ? Value * 1.5 : Value).ToString(".0##");

如果您不喜欢对 Value 的引用重复,也可以使用一些变体。

很清楚这两种可能的结果是什么,并且不依赖于将非数字类型转换为数字类型的规则,并且不会像您当前的代码那样落入整数除法陷阱。