Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QBASIC和Python:浮点数格式化/舍入问题_Python_Python 3.x_Rounding_Number Formatting_Qbasic - Fatal编程技术网

QBASIC和Python:浮点数格式化/舍入问题

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

我们正在尝试将一些qbasic脚本转换为python脚本。 这些脚本用于生成一些报告。通常,qbasic和python脚本生成的报告应该完全相同。 在生成报告时,我们需要将浮点数格式化为特定格式。 我们使用以下命令格式化数字

对于QBASIC,我们使用

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中完全相同的数字