C++写 读内存浮点型小数问题 5C

代码

float 读小数(int 内存地址)
{
    _asm
    {
        mov eax, [内存地址]
        mov eax, [eax]
    }
    return;
}
void _tmain()
{
    printf("%f\n",读小数(0x00040000));
}

这样子读出来的小数是:-1.#IND00

而使用读整数的 就可以读出来准确的整数

int 读整数(int 内存地址)
{
    _asm
    {
        mov eax, [内存地址]
        mov eax, [eax]
    }
    return;
}
 void _tmain()
{
    printf("%d\n",读整数(0x00040000));
}

本人菜鸟,请问高手们 怎样才能准确读出内存中的浮点型小数呢?

4个回答

你好!既然要读float型的数据,那么你在定义相应内存指针的时候,就要定义成float型的,而不可用int型,否则小数会被忽略。

qq_29566841
karl·zhang 回复mao20162016: 如果一定要用到汇编的话,可能有点麻烦,我没有涉及太多asm的知识。暂时解答不了。如果不用asm那就简单了,直接来个float的指针就搞定了。
接近 3 年之前 回复
mao20162016
mao20162016 大哥,那是int 整数型内存地址,而不是float内存地址。
接近 3 年之前 回复

涉及到小数务必用double类型

mao20162016
mao20162016 ..怎么写
接近 3 年之前 回复
 float 读小数(int 内存地址)
{
return *((float *)内存地址);
}
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复mao20162016: 0x00040000这个地址存的是整数还是小数?
接近 3 年之前 回复
mao20162016
mao20162016 大哥,那int是 整数型内存地址,是要用内存地址 读float内存数据的,而不是要把int内存地址转换为float。
接近 3 年之前 回复
 double fun(double *p)
{
    double *f;
    _asm
    {
        mov eax, p
        mov eax, eax
        mov f,eax
    }
    return *f;
}

int main()
{
    double f = 0.11225;

    double *p = &f;

    printf("%f",fun(p));

    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!