我有以下虚拟测试脚本:
function test() {
  var x = 0.1 * 0.2;
  document.write(x);
}
test();这将打印结果0.020000000000000004,只应打印0.02(如果您使用计算器).据我所知,这是由于浮点乘法精度的误差.
有没有人有一个很好的解决方案,以便在这种情况下,我得到正确的结果0.02?我知道有类似的功能toFixed或舍入将是另一种可能性,但我想真正打印整个数字没有任何切割和舍入.只是想知道你们其中一个人是否有一些漂亮,优雅的解决方案.
当然,否则我会转到大约10位左右.
代码
float x  = 3.141592653589793238;
double z = 3.141592653589793238;
printf("x=%f\n", x);
printf("z=%f\n", z);
printf("x=%20.18f\n", x);
printf("z=%20.18f\n", z);
会给你输出
x=3.141593
z=3.141593
x=3.141592741012573242
z=3.141592653589793116
输出的第三行741012573242是垃圾,第四行116是垃圾.双打总是有16个有效数字,而浮点数总是有7个有效数字吗?为什么双打没有14位重要人物?
我有以下代码:
float test = 1/(10^(15));
std::cout << "test: " << test << std::endl;
但我得到"test:0"作为值.我想要"测试:0.000000000000001".
我该如何实现这一目标?