格式化双打以在C#中输出

格式化双打以在C#中输出,第1张

格式化双打以在C#中输出

问题是,.NET始终会 应用格式 之前 四舍五入

double
为15位有效的十进制数字,而不管您的格式要求的精度和二进制数的确切十进制值如何。
__

我猜想Visual Studio调试器有其自己的格式/显示例程,这些例程直接访问内部二进制数,因此C#代码,C代码和调试器之间存在差异。

没有内置的函数可以访问a的确切十进制值

double
,也无法
double
将a
格式化为特定的小数位数,但是您可以自己完成此工作,方法是将内部二进制数拆开并重建为十进制值的字符串表示形式。

另外,您可以使用Jon
Skeet的

DoubleConverter
类(从他的“二进制浮点和.NET”文章链接到)。该
ToExactString
方法具有返回a的精确十进制值的方法
double
。您可以轻松地对此进行修改,以将输出舍入为特定精度。

double i = 10 * 0.69;Console.WriteLine(DoubleConverter.ToExactString(i));Console.WriteLine(DoubleConverter.ToExactString(6.9 - i));Console.WriteLine(DoubleConverter.ToExactString(6.9));// 6.89999999999999946709294817992486059665679931640625// 0.00000000000000088817841970012523233890533447265625// 6.9000000000000003552713678800500929355621337890625


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5009442.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存