用二进制表示39.5和39.50有区别吗?

用二进制表示39.5和39.50有区别吗?浮点数计算有什么缺点?

用二进制表示39.5和39.50是一样的。如下代码中,39.5和39.50都由.LC0处4个字节表示。
浮点数计算有截断误差,所以判断两个浮点数是否相等时,不能直接用==比较,而应该采用绝对误差或相对误差来判断。

int main()
{
    float a = 39.5;
    float b = 39.50;
}
main:
        push    rbp
        mov     rbp, rsp
        movss   xmm0, DWORD PTR .LC0[rip]
        movss   DWORD PTR [rbp-4], xmm0
        movss   xmm0, DWORD PTR .LC0[rip]
        movss   DWORD PTR [rbp-8], xmm0
        mov     eax, 0
        pop     rbp
        ret
.LC0:
        .long   1109262336