![](/img/trans.png)
[英]What is the difference between these two methods of finding the Key with associated highest Value?
[英]Is there a difference between these two methods to convert a double to a negative value?
//值是兩倍
有什么區別嗎? 編譯器執行此計算的快速方法是什么?
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
表現前注重正確性和簡單性。 您實際上想達到什么目的? 最簡單的表達方式是什么?
所不同的是在邏輯:第一分配將使this.Value
正時value
是負的,而第二個從不生成正數。
由於這兩個語句執行不同的操作,因此比較哪個更快是沒有意義的。 但是,總的來說,調整這種微小的代碼片段以提高性能幾乎是沒有道理的,因為這種微優化對產品整體性能的影響幾乎不存在。
這兩行代碼執行不同的操作。
使用-value
將更改符號,如果該值為正,則為負,如果為負,則為正。
使用Math.Abs(value) * -1
將使Math.Abs(value) * -1
負數,而不管原始符號如何。
使用一元負運算符可以更有效地完成第二個選項:
this.Value = -System.Math.Abs(value);
您也可以考慮自己進行比較,而不是使用Math.Abs
,這可能會更快:
this.Value = value < 0 ? value : -value;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.