错误地从字符串解析为double

Ale*_*ikh -5 .net c# string double

double value = double.Parse("4655.927411110702", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

为什么这个解析会让我得到结果:4655.927411110702 5?不知怎的,它最后增加了我的5号.我应该如何将此字符串转换为double并获得正确的结果?

Bat*_*eba 10

你不能.并非所有的数字可以准确的双精度浮点表示,而最近这种双待4655.9274111107024655.927411110702450969256460666656494140625,默认格式化你使用剪掉了广大的"笑话"的数字.

C#确实有一个十进制类型.你不能用它吗?

decimal value = decimal.Parse("4655.927411110702", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)