在 C# 中将双精度数正确格式化为字符串?

发布于 2024-10-12 18:56:06 字数 202 浏览 5 评论 0原文

我想使用 ToString() 打印出双精度数的字符串表示形式而不丢失精度,当我尝试将其格式化为字符串时,我得到以下信息:

double i = 101535479557522.5; 
i.ToString(); //displays 101535479557523

如何在 C# 中执行此操作?

I want to print out the string represenation of a double without losing precision using ToString() I get the following when I try formatting it as a string:

double i = 101535479557522.5; 
i.ToString(); //displays 101535479557523

How do I do this in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

幸福不弃 2024-10-19 18:56:07

如果您希望它完全相同,您应该使用i.ToString("r")(“r”表示往返)。您可以在MSDN 上了解不同的数字格式

If you want it to be exactly the same you should use i.ToString("r") (the "r" is for round-trip). You can read about the different numeric formats on MSDN.

入画浅相思 2024-10-19 18:56:07

您正在遇到 Double 精度的限制。来自文档

请记住,浮点数只能逼近十进制数,并且浮点数的精度决定了该数字逼近十进制数的准确程度。默认情况下,Double 值包含 15 位小数位精度,但内部保留最多 17 位数字。

如果您想要更高的精度 - 特别是保持十进制表示形式 - 您应该考虑使用 decimal 类型。

You're running into the limits of the precision of Double. From the docs:

Remember that a floating-point number can only approximate a decimal number, and that the precision of a floating-point number determines how accurately that number approximates a decimal number. By default, a Double value contains 15 decimal digits of precision, although a maximum of 17 digits is maintained internally.

If you want more precision - and particularly maintaining a decimal representation - you should look at using the decimal type instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文