2016-08-09 40 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值。