iai*_*mcd 2 python decimal python-3.x floating-point-precision
我正在上免费的在线Python教程,它要我:
创建一个温度转换器,将华氏温度值转换为摄氏温度,反之亦然,使用以下两个公式,将华氏温度f与摄氏温度c相关联:
Run Code Online (Sandbox Code Playgroud)f = c * 9/5 + 32 c = (f -32)* 5/9输入将是一个字符串,由一个浮点数字组成,紧接着是字母
F或者C,例如"13.2C".我需要转换为其他温度刻度并以相同的格式打印转换后的值.例如,如果输入是"8F",那么输出应该是(大约)"-13.333C",如果输入"12.5C"则输出应该是"54.5F".
我的答案总是稍微偏离.例如,我得到-16.444444444444446C正确的输出-16.394444444444442C.我如何使用浮动有问题吗?我的代码如下:
def celsiusCon(farenheit):
return (farenheit - 32)*(5/9)
def farenheitCon(celsius):
return ((celsius*(9/5)) + 32)
inputStr = input()
inputDig = float(inputStr[0:-2])
if inputStr[-1] == 'C':
celsius = inputDig
print(farenheitCon(celsius),'F',sep ='')
if inputStr[-1] == 'F':
farenheit = inputDig
print(celsiusCon(farenheit),'C', sep='')
Run Code Online (Sandbox Code Playgroud)
你正在切断最后两个字符,而不仅仅是最后一个字符:
inputDig = float(inputStr[0:-2])
Run Code Online (Sandbox Code Playgroud)
应该:
inputDig = float(inputStr[0:-1])
Run Code Online (Sandbox Code Playgroud)
这说明了您的准确性问题:
>>> celsiusCon(2.4)
-16.444444444444446
>>> celsiusCon(2.49)
-16.394444444444446
Run Code Online (Sandbox Code Playgroud)
由于切片从最后开始计数,切片到:-2单位和最后一位数的切割:
>>> '2.49F'[:-2]
'2.4'
>>> '2.49F'[:-1]
'2.49'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10440 次 |
| 最近记录: |