选择一个取决于布尔值的因子c#

时间:2016-12-14 17:23:27

标签: c# fractions

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

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

然而,这个人没有工作,虽然它没有分区工作,我认为它与浮动没有正确显示。所以我想问一下,我可以使用枚举,我有两个值,其中一个取决于布尔值是真还是假。其他方式也很受欢迎,以及关于格式化十进制数字的建议,因为我很新。如果已在某处记录,那么我很抱歉,但我没有找到它:(

2 个答案:

答案 0 :(得分:1)

您可以使用if声明:

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

答案 1 :(得分:1)

你应该(恕我直言)不使用从布尔到int(或任何其他类型)的转换。它依赖于转换规则的隐性知识和/或查找文档。

您的要求是:

  

如果Multiplier为true,则Text为Value乘以1.5,如果Multiplier为false,则值保持不变,转换为字符串。

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

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

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

很清楚两种可能的结果是什么,并且不依赖于将非数字类型转换为数字类型的规则,并且不会成为当前代码执行的整数除法陷阱的牺牲品