关于对十进制转单精度浮点数编程无法运行的分析和罗马数字转换成十进制的程序分析

关于对十进制转单精度浮点数编程无法运行的分析和罗马数字转换成十进制的程序分析。

1.十进制转单精度浮点数

思路:

主要思路是分开写3类数,符号数,指数和尾数,最后把它们转成字符串形式加在一起出结果。

符号数就直接用if-else判断输入的数字的正负(https://img2020.cnblogs.com/blog/2166420/202010/2166420-20201017161931101-742014748.png)

指数部分我是先将输入的数字的整数和小数分开,整数用bin转换成2进制然后用remove去掉0b,之后用127+len(整数),再将其转成2进制得到指数。小于8位用0补齐。(https://img2020.cnblogs.com/blog/2166420/202010/2166420-20201017162231704-571451115.png)但是有一个问题,就是负数无法用此方法实现,当输入的数字无整数部分就无法运行,而且考虑大于8位的情况。

最后的尾数部分,我是先将整数和小数分别转成2进制,之后用str()将其合在一起,未满23位用0补齐,在取str【1:23】截取尾数部分!(https://img2020.cnblogs.com/blog/2166420/202010/2166420-20201017162726630-416808143.png)

(https://img2020.cnblogs.com/blog/2166420/202010/2166420-20201017162735498-1483273311.png)

2.运行的问题:

负数无法实现正常运行

小数转2进制出现问题,参考(https://www.cnblogs.com/yycyhyhf/p/13824432.html) 但是感觉有些复杂没有采用,想使用乘2while循环语句,只是无法确定条件导致此程序无法运行。

一些细节点导致报错,但是不知道是哪个位置报错

2.罗马数字转十进制

思路:

主要思路用罗马数字代表1000,500,100等,然后用count()来判断输入的罗马数字中罗马符号出现的次数来转成十进制数字(https://img2020.cnblogs.com/blog/2166420/202010/2166420-20201017163837508-627020736.png)

运行的问题:

主要是只能表示4位数,而到了8位数将无法表示,出现横杠不知道如何在python中表示。

posted @ 2020-10-17 16:40  20201303张奕博  阅读(91)  评论(0编辑  收藏  举报