设 a1=1.000001,a3=0.0000001,
在单精度的变量环境下做以下操作:
按以下两种算法计算a1与100个a3相加的结果。
方法一:将100个a3逐个加到a1上;
方法二:先将100个a3相加,再加到a1上;
运算结果:方法一得出的是1.000013
方法二得出的是:6.338253*10^22我就不明白了 为什么啊 计算过程中是如何舍入的啊 ?求解~~~
在单精度的变量环境下做以下操作:
按以下两种算法计算a1与100个a3相加的结果。
方法一:将100个a3逐个加到a1上;
方法二:先将100个a3相加,再加到a1上;
运算结果:方法一得出的是1.000013
方法二得出的是:6.338253*10^22我就不明白了 为什么啊 计算过程中是如何舍入的啊 ?求解~~~
你确定你的代码是按你说的效果实现的?贴出你的Source Code吧!
float a12 = 1.000001f;
float a13 = 1.000001f;
float a2 = 1.000000f;
float a31 = 0.0000001f;
float a32 = 0.0000001f;
//(2)-(1)
Console.WriteLine("第(2)题中第(1)题结果为:");
for (int i = 0; i < 100; i++)
{
a11 = a11 + a31;
}
Console.WriteLine("方法一等于:" + a11);
Console.WriteLine(a11);
for (int i = 0; i < 99; i++)
{
a31 += a31;
}
a12 += a31;
Console.WriteLine("方法二等于:" + a12);
引用 1 楼 hao1hao2hao3 的回复:引用楼主 sddzraul 的回复:
设 a1=1.000001,a3=0.0000001,
在单精度的变量环境下做以下操作:
按以下两种算法计算a1与100个a3相加的结果。
方法一:将100个a3逐个加到a1上;
方法二:先将100个a3相加,再加到a1上;运算结果:方法一得出的是1.000013
方法二得出的是:6.3382……
[/Quote]你确定没有错? Console.WriteLine("方法一等于:" + a11);
Console.WriteLine(a11);
for (int i = 0; i < 99; i++)
{
a31 += a31; }
a12 += a31;
Console.WriteLine("方法二等于:" + a12);红色部分没错?断点看看是不是和你预想的方式一样执行的。
for (int i = 0; i < 100; i++)
{
//a31 += a31;
a32 += a31;
}
a12 += a32;