double dbT = 1.0;
dbT += 1.223456787;结果却不对,dbT为2.2234568595886,这是为什么?

解决方案 »

  1.   

    精度问题double dbT = 1.0l;
    dbT += 1.223456787l;
    试试!
      

  2.   

    应该不会,双精度是16位有效位,那把你的常数当成float型了。
      

  3.   

    double dbT = 1.0;
    dbT += 1.223456787;改称
    double dbT = (long)1.0;//1.0L还是L1.0搞不清楚拉:)自己试一下,这样写也可以,就是麻烦一点。
    dbT += (long)1.223456787;
      

  4.   

    因为1.0默认是float,当你把1.0给dbt的时候强制转换成了double,前两个字节是正确的,后两个字节已经是乱码了这样一想上面的好像也不对??double dbT = 1.0L;
    dbT += 1.223456787L;自己试吧:)
      

  5.   

    nobounded(风):能详细点吗,我这里没有谭的书,谢谢!!
      

  6.   

    LPDIRECT3D8           m_pD3D;
    .........double dbT = 1.0;
    dbT += 1.223456787;//结果正确hr = m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
    D3DDEVTYPE_HAL,
    hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED,
    &m_D3DParameters,
    &m_pD3DDevice);dbT = 1.0;
    dbT += 1.223456787;//结果不对