作业帮 > 综合 > 作业

C# 关于取余数运算%使用中的问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/09 05:58:18
C# 关于取余数运算%使用中的问题
代码如下
static void Main(string[] args)
{
double d1 = 1.2132;
while (d1 % 1 = 0)
{
d1 = 10 * d1;
}
Console.WriteLine(d1);
Console.ReadLine();
}
理论上输出值为12132
实际上输出值为1.2132E+16

我查看了一下详细的输出值发现其为12132000000000002
我就想问最后的2是怎么来的
因为计算机二进制的特性,小数运算是不精确的,你可以断点在d1 = 10 * d1看一下,乘以10后,d1的值是
12.132000000000001
再问: 好像是这样 那么该怎么解决问题 设计相同效果的代码呢?
再答: 你的目的是把小数通过乘10,变成没小数是吗?那么下面的代码可以实现: double d1 = 1.2132; string strd1 = d1.ToString(); int snum = strd1.Substring(strd1.IndexOf('.') + 1).Length; d1 = d1*Math.Pow(10, snum); Console.WriteLine(d1); Console.ReadLine();