簡體   English   中英

這兩種將double轉換為負值的方法之間有區別嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM