上图中显示ASCII和浮点型相互转换的方法
-
该函数始终首先读取最高有效字节。
其中ASCII转浮点数注意的是:
-
ascii占用的是7个字的地址空间,需要用户事先分配
-
不在 ['0' - '9'] ([16#30 - 16#39]) 范围内的任意 ASCII 字符均可用作“结束”字符,但下列字符除外:
-
点“.”(16#2E);
-
减号“-”(16#2D);
-
加号“+”(16#2B);
-
指数“e”或“E”(16#65 或 16#45)。
-
ASCII 字符格式可采用科学计数法(例如,“-2.34567e+13”)或十进制表示法(例如,“9826.3457”)
-
在溢出情况下(计算结果 >3.402824E+38 或 -3.402824E+38):
-
系统位 %S18(算术溢出或检测到的错误)将设为 1,
-
%SW17:X3 设为 1,
-
并返回值 +/- 1.#INF(+ 或 - 无穷值)?
-
如果计算结果介于 -1.175494E-38 和 1.175494E-38 之间,则结果舍入为 0.0。
-
如果操作数不是一个数字:
-
值 1。返回 #QNAN,
-
位 %SW17:X0 设为 1。
其中浮点数转ASCII注意的是:
-
该函数始终首先写入最高有效字节;
-
采用转换科学计数法进行表示;
-
“无穷”或“非数字”结果返回字符串“NAN”;
-
结束字符为“Enter”(ASCII 13);
-
该功能自动确定应该用 ASCII 值填充多少 %MW;
-
转换精度为 6 位
-
不允许使用科学计数法。
对于溢出位%s18 和%sw17:x3的关系
%SW17 浮点运算的缺省状态
在浮点算术运算中检测到错误时,会将位 %S18 设置为 1,并根据以下编码更新 %SW17 的缺省状态:
-
位 [0]:运算无效,结果不是数字 (NaN)
-
位 [1]:保留
-
位 [2]:以 0 为除数,结果无效(负无穷大或正无穷大)
-
位 [3]:结果的绝对值大于 +3.402824e+38,结果无效(负无穷大或正无穷大)
是否有帮助?