QBASIC和Python:浮点数格式化/舍入问题
我们正在尝试将一些qbasic脚本转换为python脚本。 这些脚本用于生成一些报告。通常,qbasic和python脚本生成的报告应该完全相同。 在生成报告时,我们需要将浮点数格式化为特定格式。 我们使用以下命令格式化数字 对于QBASIC,我们使用QBASIC和Python:浮点数格式化/舍入问题,python,python-3.x,rounding,number-formatting,qbasic,Python,Python 3.x,Rounding,Number Formatting,Qbasic,我们正在尝试将一些qbasic脚本转换为python脚本。 这些脚本用于生成一些报告。通常,qbasic和python脚本生成的报告应该完全相同。 在生成报告时,我们需要将浮点数格式化为特定格式。 我们使用以下命令格式化数字 对于QBASIC,我们使用 PRINT USING "########.###"; VAL(MYNUM$) 对于Python,我们使用 print('{:12.3f}'.format(mynum)) 其中MYNUM$和具有浮点值的MYNUM 但在某些情况下,python
PRINT USING "########.###"; VAL(MYNUM$)
对于Python,我们使用
print('{:12.3f}'.format(mynum))
其中MYNUM$和具有浮点值的MYNUM
但在某些情况下,python和qbasic的格式化值不同
结果如下:
有人能帮我解决这个问题,让python格式像qbasic一样工作吗?这似乎与使用的数据类型(qbasic中可能是32位浮点,python中可能是64位浮点)以及如何实现舍入有关。例如,当您使用:
from ctypes import c_float
print(floor(c_float(mynum).value*1000+.5)/1000)
c_float将python float转换为c格式
它将在python中提供与qbasic中完全相同的数字