| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4252 人关注过本帖
标题:float and UINT转换问题
取消只看楼主 加入收藏
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
结帖率:95.56%
收藏
已结贴  问题点数:20 回复次数:19 
float and UINT转换问题
新手问题~怎么转回1072048784来?
程序代码:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
    unsigned int B=1072048784;//3F E6 2A 90
    printf("%u\n",B);

    float Result1=0;
    memcpy(&Result1, &B, sizeof(float));
    printf("%f\n",Result1);

    printf("//----------------------------\n");

    char A[]={"1.798174"};
    printf("%s\n",A);

    int Result2=0;
    memcpy(&Result2, &A, strlen(A));
    printf("%u\n",Result2);

    printf("//----------------------------\n");

    float C=(float)atof(A);
    printf("%d\n",C);//若注解这行则下一行出的数值又会变~这是为何?
    printf("%u\n",C);

    return 0;
}


1072048784
1.798174
//----------------------------
1.798174
959917617
//----------------------------
939524096
1073741824 or 939524096 //若注解上一行则出的数值会变
2013-04-09 22:14
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
回复 2楼 Juson
不行耶~数值有差~而且差值不一定~
图片附件: 游客没有浏览图片的权限,请 登录注册

不要投我
2013-04-10 09:07
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
之前就是做到这一步后~总是差一点再转回16进制后~就和原本的不同了~

不要投我
2013-04-10 09:08
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
那为何atof();后~他自动帮我少掉一个位数?
原本丢进去是"1.798174"~出来变成1.79817~
atof();的返回值是Double型~精度应该比float更高~
就算强制转型float~它还是有小数后6位的精度~
怎会缩短成5位?

不要投我
2013-04-10 14:26
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

不要投我
2013-04-10 14:31
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
仔细看改后错更多~所以这篇删了~

[ 本帖最后由 yz1025 于 2013-4-10 14:48 编辑 ]

不要投我
2013-04-10 14:39
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
以下是引用yz1025在2013-4-10 14:31:51的发言:

因为取得b值后~还有后段的处理~所以这边错~后面就全错~

不要投我
2013-04-10 14:53
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
回复 10楼 Juson
printf();出来的值是正确的~但是我不要printf();
直接看内存数值~证实b值确实已被改变~这要如何补救?
原本是90 2A E6 3F~转换后变成91 2A E6 3F
图片附件: 游客没有浏览图片的权限,请 登录注册

不要投我
2013-04-10 15:28
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
那我若忽略这个误差~
另一个问题是~我要如何将这4个字直接从内存中取出~
printf();内存中 91 2A E6 3F 这4个字?

不要投我
2013-04-10 15:55
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
以上基本需求我全都已经做到了~
现在是要提高精确度减少误差简化程序代码
毕竟程序要做上百万次转换~

不要投我
2013-04-10 16:03
快速回复:float and UINT转换问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019312 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved