相关疑难解决方法(0)

如何使用cout以完全精度打印双精度值?

所以我已经得到了我最后一个问题的答案(我不知道为什么我没有想到这一点).当我没想到它的时候,我正在打印一个圆润的double使用cout.如何使用全精度cout打印double

c++ floating-point precision iostream cout

308
推荐指数
9
解决办法
41万
查看次数

C#加倍到十进制精度损失

我有一个双"138630.78380386264",我想将它转换为十进制,但是当我这样做时,我通过铸造或使用Convert.ToDecimal(),我失去精度.

这是怎么回事?decimal和double都可以保存这个数字:

在此输入图像描述

double doub = double.Parse("138630.78380386264");
decimal dec = decimal.Parse("138630.78380386264");
string decs = dec.ToString("F17");
string doubse =DoubleConverter.ToExactString(doub);
string doubs = doub.ToString("F17");

decimal decC = (decimal) doub;
string doudeccs = decC.ToString("F17");
decimal decConv = Convert.ToDecimal(doub);
string doudecs = decConv.ToString("F17");
Run Code Online (Sandbox Code Playgroud)

另外:如何使用ToString()on double打印出与调试器显示的相同的结果?例如138630.78380386264

c# precision double decimal

29
推荐指数
2
解决办法
3万
查看次数

使用ToString("F1")时浮点的舍入不正确

我有一个浮动值:12345.6489

我使用时格式化:

(12345.6489f)的ToString( "F1")

然后我得到了结果

12345.7

但这是不正确的,因为它应该是12345.6.

有谁知道为什么会这样?另一个提示是在格式化之前转换为double会返回正确的结果,如果我的浮点值稍微小一点,例如1234.6489,那么我也得到正确的结果.

c# string format floating-point

11
推荐指数
1
解决办法
4503
查看次数

ToString中的.NET舍入错误("f2")

你好,我在C#中有这个代码:

float n = 2.99499989f;
MessageBox.Show("n = " + n.ToString("f2", CultureInfo.InvariantCulture));
Run Code Online (Sandbox Code Playgroud)

而这个C++代码:

float n = 2.99499989f;
printf("n = %.2f", n);
Run Code Online (Sandbox Code Playgroud)

一个输出3.00.
第二个输出2.99.

我不知道为什么会这样.

更新:

我也尝试了Objective-C NSLog,输出为2.99.

我需要快速修复它,所以我使用以下方法:

float n = 2.99499989f;
float round = (float)Math.Round(n, 2);
MessageBox.Show("round = " + round.ToString(CultureInfo.InvariantCulture));
Run Code Online (Sandbox Code Playgroud)

此代码显示2.99,但以双精度计算舍入.我找不到Math.RoundF.

c# c++ rounding-error

6
推荐指数
2
解决办法
1万
查看次数