|
- .版本 2
- .支持库 eCalc
- .支持库 spec
- .程序集 程序集1
- .程序集变量 正次方表, 大数, , "128", 初始化生成,后续只读
- .程序集变量 负次方表, 大数, , "128", 初始化生成,后续只读
- .子程序 _启动子程序, 整数型
- 初始化次方表 ()
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 小数, 小数型
- 小数 = 0.1
- 调试输出 (小数, 小数型_无损到文本 (小数), 到文本 (小数))
- 小数 = -1234567
- 调试输出 (小数, 小数型_无损到文本 (小数), 到文本 (小数))
- 输出调试文本 (小数)
- .子程序 小数型_无损到文本, 文本型, 公开, 返回小数文本(高精度无损还原,没有e+,e-符号 失败返回INF或NAN
- .参数 小数, 小数型, , 使用核心库的 到文本() 将损失精度 无损转换不丢失精度,且不出现e符号
- .局部变量 符号位, 逻辑型, , , 真:负数 假:正数
- .局部变量 指数位, 整数型, , , 范围:-127~128
- .局部变量 尾数位, 整数型, , , 范围:0~8388607
- .局部变量 大数, 大数, , , 小数运算结果
- .局部变量 尾数精度, 大数, , , 2的指数位次方/8388608
- .局部变量 尾数, 大数, , , 范围:0~8388607
- .局部变量 初始化, 逻辑型, 静态
- 符号位 = 假
- 指数位 = 0
- 尾数位 = 0
- 置入代码 ({ 80, 83, 139, 69, 8, 131, 248, 0, 125, 7, 187, 1, 0, 0, 0, 235, 2, 51, 219, 137, 93, 252, 80, 193, 232, 23, 37, 255, 0, 0, 0, 131, 232, 127, 137, 69, 248, 88, 37, 255, 255, 127, 0, 137, 69, 244, 91, 88 })
- .如果真 (初始化 = 假)
- 初始化次方表 ()
- 初始化 = 真
- .如果真结束
- .判断开始 (指数位 = -127 且 尾数位 = 0)
- 返回 (“0”)
- .判断 (指数位 = 128)
- .如果 (尾数位 = 0)
- 返回 (选择 (符号位, “-INF”, “INF”))
- .否则
- 返回 (选择 (符号位, “-NAN”, “NAN”))
- .如果结束
- .默认
- 尾数.导入数字 (尾数位)
- .如果 (指数位 ≥ 0)
- 大数 = 正次方表 [指数位 + 1]
- .否则
- 大数 = 负次方表 [0 - 指数位]
- .如果结束
- 尾数精度 = 大数.乘 (负次方表 [23])
- 大数 = 大数.加 (尾数精度.乘 (尾数))
- .如果真 (符号位)
- 大数.负 ()
- .如果真结束
- .判断结束
- 返回 (大数.导出文本 ())
- .子程序 初始化次方表, , , 第一次执行 小数型_无损到文本() 需要初始化
- .局部变量 次方, 整数型
- .局部变量 大数, 大数
- .局部变量 大数二, 大数, , , 固定:2
- .局部变量 大数半, 大数, , , 固定:0.5
- 大数.导入数字 (1)
- 大数二.导入数字 (2)
- 大数半.导入数字 (0.5)
- .计次循环首 (128, 次方)
- 正次方表 [次方] = 大数
- 大数 = 大数.乘 (大数二)
- .计次循环尾 ()
- 大数.导入数字 (1)
- .计次循环首 (128, 次方)
- 大数 = 大数.乘 (大数半)
- 负次方表 [次方] = 大数
- .计次循环尾 ()
复制代码
|
|