Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这两种将double值转换为负值的方法之间是否存在差异?_C#_Double - Fatal编程技术网

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!我已经编辑了你的标题。请参阅“问题是否应该在标题中包含“标签?”,其中的共识是“不,不应该”。