相关疑难解决方法(0)

为什么浮点数不准确?

为什么有些数字在存储为浮点数时会失去准确性?

例如,十进制数9.2可以精确地表示为两个十进制整数(92/10)的比率,两者都可以用二进制(0b1011100/0b1010)精确表示.但是,存储为浮点数的相同比率永远不会完全等于9.2:

32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
Run Code Online (Sandbox Code Playgroud)

这样一个看似简单的数字如何在64位内存中表达"太大" ?

language-agnostic floating-point precision

181
推荐指数
4
解决办法
3万
查看次数

pow功能的奇怪行为

运行以下代码行时:

int i,a;    

for(i=0;i<=4;i++)  
{    
    a=pow(10,i);    
    printf("%d\t",a);    
}   
Run Code Online (Sandbox Code Playgroud)

我很惊讶地看到输出,它出来了 1 10 99 1000 9999而不是1 10 100 1000 10000.

可能的原因是什么?

注意
如果您认为它是浮点不准确,在上面的for循环中i = 2,存储在变量中的值a99.

但如果你写的话

a=pow(10,2);
Run Code Online (Sandbox Code Playgroud)

现在a的价值出现了100.怎么可能?

c pow

13
推荐指数
3
解决办法
4123
查看次数

我这里的模数代码有什么问题?(C)

#include <stdio.h>

int main (void)
{
  int x = 10^2;
  long a = 4000465006540123; //(16 places)
  long b = 4000465006540123 % x;
  
  printf("%li\n", b);
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码时(它正确编译),代码打印出“3”。难道它不应该打印出“23”,因为 x 是 100,而不是 10?

c modulus

0
推荐指数
1
解决办法
61
查看次数

标签 统计

c ×2

floating-point ×1

language-agnostic ×1

modulus ×1

pow ×1

precision ×1