Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 浮动到MATLAB的fprintf()的文本行为

使用fprintf将浮点数转换为十进制表示形式的文本时,输出为一系列十进制数字(可能以0开头)。
此表示如何工作?

>>fprintf('%tu\n',pi) >>1078530011 >>fprintf('%bu\n',pi) >>04614256656552045848 抱歉,这很琐碎;我在其他地方找不到答案,部分原因是搜索被各种可用的十进制数据类型所淹没。

请注意,%t和%b标志是与C的fprintf()两个区别。根据文档,它分别打印浮点数或双精度字“而不是无符号整数”。 o,x和u在八进制,十六进制和十进制之间切换。



回答:

此表示形式是数字的二进制IEEE 754浮点表示形式 ,打印为无符号整数。

IEEE 754转换器网站告诉我们,Pi的IEEE 754单精度表示形式(大约为3.1415927)为40490FDB十六进制,十进制为1078530011(您看到的数字)。 '%bu'格式说明符的工作原理类似,但输出双精度表示形式。

这些格式说明符的目的是允许您将浮点值的位精确表示形式存储到文本文件中。如果您想保证位的精确存储,则以人类可读形式打印浮点值的另一种方法需要格外小心,并且可能会出现一些边缘情况(非规范化值...?)完全可以存储。



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:46


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.