你如何向仍然认为计算机是无限智能和准确的新鲜程序员和外行人解释浮点不准确?
你有一个最喜欢的例子或轶事似乎比一个精确但干燥的解释更好地理解这个想法吗?
这是如何在计算机科学课程中教授的?
为什么这个C程序输出"错误"?
#include<stdio.h>
void main()
{
float f = 12345.054321;
printf("%f", f);
getch();
}
Run Code Online (Sandbox Code Playgroud)
输出:
12345.054688
Run Code Online (Sandbox Code Playgroud)
但输出应该是,12345.054321.
我在VS2008中使用VC++.
为什么是10000000000000.126.toString()1000000000000.127而100000000000.126.toString()不是?
我认为它必须与Js中的Number的最大值有关(根据这个SO问题),但这与浮点运算有何关系?
我问,因为我写了这个函数来使用数千个分隔符格式化数字,并希望防止这种情况.
function th(n,sep) {
sep = sep || '.';
var dec = n.toString().split(/[,.]/),
nArr = dec[0].split(''),
isDot = /\./.test(sep);
return function tt(n) {
return n.length > 3 ?
tt(n.slice(0,n.length-3)).concat(n.slice(n.length-3).join('')) :
[n.join('')]
;
}(nArr)
.join(sep)
+ (dec[1] ? (isDot?',':'.') + dec[1] : '');
}
sep1000(10000000000000.126); //=> 10.000.000.000.000,127
sep1000(1000000000000.126); //=> 1.000.000.000.000,126
Run Code Online (Sandbox Code Playgroud)