高手赐教:关于float与double型数据在计算机内部是如何表示的????????

fieldsoft 2001-07-22 11:39:19
以前没注意过这个问题,请看以下两段代码:
float value;
printf("please input value:\n");
scanf("%f",&value);
printf("value is:%f",value);
可正确输出输入的数值但改为:
double value;
printf("please input value:\n");
scanf("%f",&value);
printf("value is:%f",value);
不能正确输出所输入的数据,还请各位大哥不吝赐教,谢谢!
...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kenny_yuan 2001-07-24
  • 打赏
  • 举报
回复
“关于float与double型数据在计算机内部是如何表示的”

好像你并没有问这个呀?这个可以去看基本的编码知识,从补码看起。
fieldsoft 2001-07-23
  • 打赏
  • 举报
回复
to lijunjoy:
你有碰到过这种问题吗?那double数据应该用什么格式控制符呢
seedundersnow 2001-07-23
  • 打赏
  • 举报
回复

必须在格式串里给出正确的格式....(小声地...)如果你是向float的地址写double,还会导致运行错误哦~~~~~~~~~

seedundersnow 2001-07-23
  • 打赏
  • 举报
回复

必须在格式串里给出正确的格式....(小声地...)如果你是向float的地址double,还会导致错误哦~~~~~~~~~

kenny_yuan 2001-07-23
  • 打赏
  • 举报
回复
%lf
patient 2001-07-23
  • 打赏
  • 举报
回复
应该是单精度和双精度的
FireBow 2001-07-23
  • 打赏
  • 举报
回复
关注
fieldsoft 2001-07-22
  • 打赏
  • 举报
回复
怎么没人理我,老大帮帮忙吧
实数与文本转化的子程序

函数声明如下:
void real2txt(char* text, float f, int width);
void real2txt(char* text, double f, int width);
void txt2real(char * text, float * f, int width);
void txt2real(char * text, double * f, int width);

编译及运行要求:支持 Intel 指令集,支持 C 与汇编混合编译。(如 Windows + VC)

缘起:我在 C 标准库里似乎没有找到文本转化为实数的程序。因为要用,只好自己编了一个。为了方便起见,我在程序中没有牵涉到科学记数法的处理。

效率:本着一切效率优先的原则,我用标准 C 与汇编语言 (Intel 8087 指令系统) 混合编程的方法。所有函数均进行过效率测试,结果如下:
实数->文本:12 ~ 24 字节文本的转化耗费 1 ~ 2 kClk
文本->实数:12 ~ 32 字节文本的转化耗费 0.8 ~ 3 kClk
测试平台是 Intel 迅驰 3,单位 kClk 是一千个 CPU 指令周期。相比之下,C 标准库函数 pow(a, b) 的 CPU 耗费是 0.5 kClk,而 sprintf(***,"%f",***) 的系统耗费则是 14 kClk。

问题:把文本转化成实数的问题似乎不是很大,但把实数转化成文本问题就大了:8087 中没有反对数指令!也就是说,pow(a, b) 必须自己算!我曾经使用过一种算法,即用多次开平方的方式来实现指数运算,但效率只有 pow(a, b) 的六分之一。最后实在无奈,我只要还是使用 pow(a, b) 来算指数。我甚至反汇编 pow(a, b),但没看懂算法,而且也没见代码中使用 fscale 这样的指令。
对数指令 fyl2x 的系统耗费一般在 0.180 kClk,相比之下反对数实在太慢了。怎么快速地算反对数这个问题我实在想不通,望大侠赐教

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧