在.NET中运行与双倍乘法相关的快速实验?并阅读了几篇关于C#字符串格式的文章,我认为这样:
{
double i = 10 * 0.69;
Console.WriteLine(i);
Console.WriteLine(String.Format(" {0:F20}", i));
Console.WriteLine(String.Format("+ {0:F20}", 6.9 - i));
Console.WriteLine(String.Format("= {0:F20}", 6.9));
}
Run Code Online (Sandbox Code Playgroud)
将是这个C代码的C#等价物:
{
double i = 10 * 0.69;
printf ( "%f\n", i );
printf ( " %.20f\n", i );
printf ( "+ %.20f\n", 6.9 - i );
printf ( "= %.20f\n", 6.9 );
}
Run Code Online (Sandbox Code Playgroud)
但是C#会产生输出:
6.9
6.90000000000000000000
+ 0.00000000000000088818
= 6.90000000000000000000
Run Code Online (Sandbox Code Playgroud)
尽管我在调试器中显示的值等于6.89999999999999946709(而不是6.9).
与C比较,显示格式要求的精度:
6.900000
6.89999999999999946709
+ 0.00000000000000088818
= 6.90000000000000035527
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
(Microsoft .NET Framework版本3.51 SP1/Visual …
我有4个舍入选项:无,标准,向上,向下
如果他们选择None并且数字是108.7879,我只想显示108.78而没有舍入.我知道我可能会使用Math.Ceil for Up和Math.Floor for Down,但我不知道如何使用None或Standard.
如果他们选择标准:
106.78应该达到107
106.49应该向下舍入到106
如果他们选择Up:
106.49应该达到107
106.52应该达到107
如果他们选择Down:
106.78应该向下舍入到106
106.49应该向下舍入到106