如果我执行以下操作:
int c0 = CHAR_MAX; //8 bit
int c1 = CHAR_MAX; //8-bit
int i = c0*c1; //store in 32-bit variable
printf("%d\n", i); //prints 16129
我们可以看到,将8位数字相乘并产生32位输出是没有问题的。
但是,如果我这样做了
int i0 = INT_MAX; //32-bit
int i1 = INT_MAX; //32 bit variable
long long int ll = i0*i1; //store in 64-bit var
我尝试将两个小数( 15,2)相除,并返回15位的高精度小数,但我在超过10位的任何小数位上不断得到2616数值溢出错误,有没有其他方法可以实现15位的小数结果? select (cast(19983.74 as decimal(15,2))*1.0000000000000)/(cast(15897.40 as decimal(15,2))*1.0000000000000)
为什么对于下面的情况,toFixed()不像预期的那样工作呢?解决办法是什么?
代码:
var num = 5.56789;
var n = num.toFixed(16);
console.log(num)
console.log(n)
n:5.5678900000000000期望值
n:5.5678900000000002的实际值
注意:
,我已经讨论了所有相关的堆栈溢出问题。,我知道它没有给出预期的结果,因为浮点数不能完全用二进制表示。,我想要的是一个库函数,它实际上确认了上面的内容并生成了预期的输出。