用指数舍入一个双精度值
Posted
技术标签:
【中文标题】用指数舍入一个双精度值【英文标题】:Rounding a double value With Exponent 【发布时间】:2016-08-22 08:21:34 【问题描述】:例如,我有一个双精度值 0.000034,我想要一个双精度值 3.40E-5(请注意,所需的第二个值也是双精度值而不是字符串)。到目前为止,我发现的所有结果都将值转换为不打算使用的字符串格式。我的图表程序有双打列表。
Image of the resulted Chart
我已经添加了图片。此处黄色突出显示的行显示 0(百分比),但实际上这是我想在此处显示的一个非常非常小的数字。但它只是显示为 0,这不是预期的。
提前致谢。
【问题讨论】:
3.40E-5
纯粹是double
的字符串表示形式。
想对图表中的值做什么?
虽然我没有投反对票,但是你的帖子根本就是少了一个“问题”
你的调试器显示值有问题吗???
【参考方案1】:
0.000034 和 3.40e-5 只是声明具有相同值的相同变量的两种不同方式,它与舍入无关。只有当您将值表示为字符串时,您才会看到“E”。因此,如果您像下面这样声明 2 个变量,它们将具有相同的值;
double value1 = 0.000034;
double value2 = 3.40e-5;
【讨论】:
确实你可以做到这一点而且不会失败:Debug.Assert(0.000034 == 3.40e-5);
“只有当你将值表示为字符串时,你才会看到“E”。”不是正确的陈述,如果我将双精度数舍入到多于 2 的小数位,我也会看到它。
你在哪里看到的? Visual Studio 调试器还向您显示字符串表示形式的值。实际值以如下所述的方式存储在内存中:en.wikipedia.org/wiki/Double-precision_floating-point_format 如果您编写类似 (3.40e-5).ToString("F15") 的内容,您将在双精度变量中获得 15 个小数以上是关于用指数舍入一个双精度值的主要内容,如果未能解决你的问题,请参考以下文章