设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 126|回复: 0
收起左侧

易语言实现将32位IEEE754格式编码小数型高精度无损转换还原到文本字符串 (返回文本型)

[复制链接]
发表于 2023-11-29 16:11:03 | 显示全部楼层 |阅读模式
1.png
  1. .版本 2
  2. .支持库 eCalc
  3. .支持库 spec

  4. .程序集 程序集1
  5. .程序集变量 正次方表, 大数, , "128", 初始化生成,后续只读
  6. .程序集变量 负次方表, 大数, , "128", 初始化生成,后续只读

  7. .子程序 _启动子程序, 整数型

  8. 初始化次方表 ()
  9. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  10. 返回 (0)  ' 可以根据您的需要返回任意数值

  11. .子程序 _临时子程序
  12. .局部变量 小数, 小数型

  13. 小数 = 0.1
  14. 调试输出 (小数, 小数型_无损到文本 (小数), 到文本 (小数))
  15. 小数 = -1234567
  16. 调试输出 (小数, 小数型_无损到文本 (小数), 到文本 (小数))
  17. 输出调试文本 (小数)

  18. .子程序 小数型_无损到文本, 文本型, 公开, 返回小数文本(高精度无损还原,没有e+,e-符号 失败返回INF或NAN
  19. .参数 小数, 小数型, , 使用核心库的 到文本() 将损失精度 无损转换不丢失精度,且不出现e符号
  20. .局部变量 符号位, 逻辑型, , , 真:负数 假:正数
  21. .局部变量 指数位, 整数型, , , 范围:-127~128
  22. .局部变量 尾数位, 整数型, , , 范围:0~8388607
  23. .局部变量 大数, 大数, , , 小数运算结果
  24. .局部变量 尾数精度, 大数, , , 2的指数位次方/8388608
  25. .局部变量 尾数, 大数, , , 范围:0~8388607
  26. .局部变量 初始化, 逻辑型, 静态

  27. 符号位 = 假
  28. 指数位 = 0
  29. 尾数位 = 0
  30. 置入代码 ({ 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 })
  31. .如果真 (初始化 = 假)
  32.     初始化次方表 ()
  33.     初始化 = 真
  34. .如果真结束
  35. .判断开始 (指数位 = -127 且 尾数位 = 0)
  36.     返回 (“0”)
  37. .判断 (指数位 = 128)
  38.     .如果 (尾数位 = 0)
  39.         返回 (选择 (符号位, “-INF”, “INF”))
  40.     .否则
  41.         返回 (选择 (符号位, “-NAN”, “NAN”))
  42.     .如果结束

  43. .默认
  44.     尾数.导入数字 (尾数位)
  45.     .如果 (指数位 ≥ 0)
  46.         大数 = 正次方表 [指数位 + 1]
  47.     .否则
  48.         大数 = 负次方表 [0 - 指数位]
  49.     .如果结束
  50.     尾数精度 = 大数.乘 (负次方表 [23])
  51.     大数 = 大数.加 (尾数精度.乘 (尾数))
  52.     .如果真 (符号位)
  53.         大数.负 ()
  54.     .如果真结束

  55. .判断结束
  56. 返回 (大数.导出文本 ())

  57. .子程序 初始化次方表, , , 第一次执行 小数型_无损到文本() 需要初始化
  58. .局部变量 次方, 整数型
  59. .局部变量 大数, 大数
  60. .局部变量 大数二, 大数, , , 固定:2
  61. .局部变量 大数半, 大数, , , 固定:0.5

  62. 大数.导入数字 (1)
  63. 大数二.导入数字 (2)
  64. 大数半.导入数字 (0.5)
  65. .计次循环首 (128, 次方)
  66.     正次方表 [次方] = 大数
  67.     大数 = 大数.乘 (大数二)
  68. .计次循环尾 ()
  69. 大数.导入数字 (1)
  70. .计次循环首 (128, 次方)
  71.     大数 = 大数.乘 (大数半)
  72.     负次方表 [次方] = 大数
  73. .计次循环尾 ()
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-27 20:41 , Processed in 0.790045 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表