Boolean Multiplier;
double Number;
double Value;
string Text;
Text = (Value * (1 + (Convert.ToInt32(Multiplier) / 2)).ToString(".0##");
这是我已经抽象为一般行为的当前代码,如果Multiplier为true,则Value的预期行为乘以1.5,如果Multiplier为false,则值保持不变。
然而,这个人没有工作,虽然它没有分区工作,我认为它与浮动没有正确显示。所以我想问一下,我可以使用枚举,我有两个值,其中一个取决于布尔值是真还是假。其他方式也很受欢迎,以及关于格式化十进制数字的建议,因为我很新。如果已在某处记录,那么我很抱歉,但我没有找到它:(
答案 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
重复的引用,可以使用某些变体。
很清楚两种可能的结果是什么,并且不依赖于将非数字类型转换为数字类型的规则,并且不会成为当前代码执行的整数除法陷阱的牺牲品