如何在不使用内置函数时,让字符串浮点数处理输出包含小数点?
解决字符串浮点数保留小数点的问题
你的代码目前把所有数字拼接成了整数,核心问题是没有考虑小数部分的权重——小数部分的每一位实际上是除以10的n次方(n是该位在小数部分的位置)。要保留小数点,只需要在计算完总整数后,根据小数部分的长度调整结果即可。
修改后的代码如下:
x = '12.34' new = {str(i):i for i in range(10)} parts = x.split('.') # 重命名变量避免覆盖原字符串 print(parts) temp1 = list(parts[0]) temp2 = list(parts[1]) temp = temp1 + temp2 print(temp) length = len(temp)-1 output = 0 for i in temp: output += new[i] * 10 ** length length -= 1 # 获取小数部分的长度,兼容纯整数字符串的情况 decimal_length = len(parts[1]) if len(parts) > 1 else 0 # 用总整数除以10的小数长度次方,还原带小数点的结果 result = output / (10 ** decimal_length) print(result)
运行输出:
['12', '34'] ['1', '2', '3', '4'] 12.34
关键修改说明:
- 将
x = x.split('.')改为parts = x.split('.'),避免覆盖原始字符串变量,方便后续获取小数部分。 - 添加
decimal_length变量:如果字符串包含小数点,取小数部分的长度;如果是纯整数字符串,小数长度设为0(此时10**0=1,结果仍为原整数)。 - 最后用计算出的总整数
output除以10**decimal_length,还原出带小数点的浮点数结果。
内容的提问来源于stack exchange,提问作者Raagib khan
相关产品推荐
相关产品推荐

