C# 这两种将double值转换为负值的方法之间是否存在差异?
//价值是双倍的 有什么区别吗?编译器执行此计算的快速方法是什么C# 这两种将double值转换为负值的方法之间是否存在差异?,c#,double,C#,Double,//价值是双倍的 有什么区别吗?编译器执行此计算的快速方法是什么 value = System.Math.Abs(55.55); this.Value = -value; // or this.Value = System.Math.Abs(value) * (-1); 有什么不同吗 当然。考虑: double value = -5; this.Value = -value; // Sets Value to 5 this.Value = Math.Abs(value) * -1;
value = System.Math.Abs(55.55);
this.Value = -value;
// or
this.Value = System.Math.Abs(value) * (-1);
有什么不同吗
当然。考虑:
double value = -5;
this.Value = -value; // Sets Value to 5
this.Value = Math.Abs(value) * -1; // Sets Value to -5
在执行之前,先关注正确性和简单性。你到底想达到什么目的?最简单的表达方式是什么?区别在于逻辑:当
值
为负数时,第一个赋值将使这个值
为正数,而第二个赋值从不产生正数
因为这两个语句执行不同的操作,所以没有必要比较哪一个更快。但是,一般来说,调整如此微小的代码片段以提高性能是没有意义的,因为这种微优化对产品整体性能的影响几乎总是不存在的。这两行代码的作用不同 使用
-value
将更改符号,如果值为正值,则为负值,如果值为负值,则为正值
使用Math.Abs(value)*-1将使值为负值,而不管原始符号是什么
使用一元负运算符可以更有效地执行第二个选项:
this.Value = -System.Math.Abs(value);
你也可以考虑自己做比较,而不是使用<代码>数学。ABS,这可能会更快:
this.Value = value < 0 ? value : -value;
this.Value=Value<0?价值:-价值;
编译器执行此计算的快速方法是什么?你可以测量你自己。埃里克·利珀特:如果你有两匹马,你想知道哪匹马跑得更快,那就比赛你的马。欢迎来到Stack Overflow!我已经编辑了你的标题。请参阅“问题是否应该在标题中包含“标签?”,其中的共识是“不,不应该”。