小编Ama*_*ldo的帖子

为什么10/3它在C中是准确的?

看看这段代码.10/3返回3.333333 2538 604736328125000当我在calcutor中乘以3得到9.99,但如果通过代码做同样的话我得到10.00.怎么可能?

#include <stdlib.h>
#include <stdio.h>

int main() {

    float v = 10.f/3.f;
    float test = v*3.f;
    printf("10/3 => %25.25f \n (10/3)*3 => %25.25f\n",v,test);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是没有printf的汇编代码,使用默认的gcc 7.2.1参数编译:

0000000000400497 <main>:
  400497:       55                      push   rbp
  400498:       48 89 e5                mov    rbp,rsp
  40049b:       f3 0f 10 05 b1 00 00    movss  xmm0,DWORD PTR [rip+0xb1]        # 400554 <_IO_stdin_used+0x4>
  4004a2:       00 
  4004a3:       f3 0f 11 45 fc          movss  DWORD PTR [rbp-0x4],xmm0
  4004a8:       f3 0f 10 4d fc          movss  xmm1,DWORD PTR [rbp-0x4]
  4004ad: …
Run Code Online (Sandbox Code Playgroud)

c intel ieee-754

6
推荐指数
1
解决办法
348
查看次数

标签 统计

c ×1

ieee-754 ×1

intel ×1