gpt4 book ai didi

c# - C# Console.WriteLine(double) 是否以完全精度写入此变量?

转载 作者:行者123 更新时间:2023-11-30 19:44:19 24 4
gpt4 key购买 nike

我所说的“完全精确”是指不会出现正确结果与我使用 C# 程序计算的结果不同的情况。

我已经通过在 C# 和 C++(不使用 cout.precision())下运行相同的测试来检查这一点。我确信我的程序在 C# 和 C++ 下的 2 个变体在相同的测试中表现相似。

C# 示例代码。

double a;
//...code...
Console.WriteLine(a.ToString(CultureInfo.InvariantCulture));

相同,但在 C++ 上。

double a;
//...code...
cout << a << endl;

实际上,我的没有 cout.precision() 的 C++ 程序失败了,只有 Console.WriteLine() 的 C# 程序通过了。

我知道发生这种情况是因为我的 C++ 程序以某种方式(可能是神奇地)截断了数字并且精度丢失了。但是,通过所有测试是否意味着 C# 始终以全精度打印 double 变量?

最佳答案

如果您使用“R”格式说明符格式化您的 double ,您将获得“往返”表示。参见 http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#RFormatString了解详情。用法:

string s = someDoubleValue.ToString("R");

如果未指定,默认格式说明符是“G”(通用),它“将数字转换为最紧凑的定点或科学记数法,具体取决于数字的类型以及精度说明符存在。”参见 http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#GFormatString了解详情。如果未提供精度说明符,double 将获得 15 位精度,因此使用“G”会可能丢失精度。

关于c# - C# Console.WriteLine(double) 是否以完全精度写入此变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com