我刚刚发现了一些奇怪的在我的代码印刷浮点值安慰精密problem_
我创建简单的应用程序,以显示你有什么我谈论
float Test1 = 112.12;
float Test2 = 0.12;
printf("Test1 %15f", Test1);
printf("Test1 %15f", Test1);
我一直认为,如果我写的Test1 = 112.12这意味着它等于112.120000000
但是我得到112.120003
并在第二个例子中,我得到0.11999或0.120000这取决于
有人能解释我为什么会出现这种情况会发生什么,如果我尝试这两个数字将他们得到转换为double(或任何其他更精确的数据类型)划分,所以我可以得到更高的精度,否则会在使用它们的当前形式(浮点)
我已经使用VS 2010中测试该(如果它的事项)
是的,我同意但不是更合乎逻辑它将数字“降低”到更低的值,如0.119999不是更高的值,然后我像第一个示例那样输入 – user996937
@ user996937 - 没有“舍入”我只是给它一个它不能完全表示的数字,而这是它能够提供的最好的数字。 –