2016-08-09 126 views
2

我有這樣的代碼在我的程序:Math.Sinh()在C#中返回不同的值

Math.Sinh(myvalue).ToString() 

上面的代碼在Windows 8返回Infinity和Windows 10返回

爲什麼它返回兩個不同的值?

+4

這些值是相同的'double.PositiveInfinity'。只有字符串表示更改爲閃亮的'∞'。 –

+0

他們應該是相同的,因爲我用這個來加密數據,這導致我的密鑰加密。我怎樣才能做到這一點 ? –

+0

無論視覺表現是什麼,當結果是無窮時,加密數據都會非常困難! –

回答

4

返回值Math.Sinh(myvalue)仍然相同double.PositiveInfinity。我假設包含特殊double值的字符串表示的資源文件已在Windows 10中更改,因此它們現在返回無窮大符號

如果你想保持你的代碼舊的方式(這實際上是不依賴於特定文化的字符串表示是一個好主意),你可以考慮這樣的事情:

double sinh = Math.Sinh(myvalue); 
string v = double.IsInfinity(myvalue) ? "Infinity" : myvalue.ToString(); 

或只需檢查如果ToString()的返回值是並相應地更改它。

但請記住,您可能需要檢查一些更特殊的double值。