登录论坛

查看完整版本 : 浮动到MATLAB的fprintf()的文本行为


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

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

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



回答:

此表示形式是数字的二进制IEEE 754浮点表示形式 (http://en.wikipedia.org/wiki/IEEE_754) ,打印为无符号整数。

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

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



更多&回答... (https://stackoverflow.com/questions/3983480)