0

我有以下代码:

import os

reader=open('try.txt', 'r')
data=reader.read()
reader.close()

x=0.0
y=0.0
z=0.0

def xcoord():
    global x
    global y
    global z
    while x<=1.0:
        mypath1='C:\\Users\\Rebecca\\Documents\\PhD\\Learnpython\\X' + str(x)
        os.makedirs(mypath1)
        ycoord()
        x+=0.01
        y=0.0
        z=0.0

def ycoord():
    global x
    global y
    global z
    while y<=1.0:
        mypath2='C:\\Users\\Rebecca\\Documents\\PhD\\Learnpython\\X' + str(x) + '\\Y' + str(y)
        os.makedirs(mypath2)
        zcoord()
        y+=0.01
        z=0.0

def zcoord():
    global z
    while z<=1.0:
        writer=open('C:\\Users\\Rebecca\\Documents\\PhD\\Learnpython\\X' + str(x) + '\\Y' + str(y) + '\\X' + str(x) + 'Y' + str(y) + 'Z' + str(z) + '.dat', 'a')
        writer.write(data)
        print('interstitial Ce' + ' %.2f' % x + ' %.2f' % y + ' %.2f' % z + ' fix', file=writer)
        print('centre' + ' %.2f' % x + ' %.2f' % y + ' %.2f' % z, file=writer)
        print('size 14 28', file=writer)
        print('dump1 inter' + '%.2f' % x + '%.2f' % y +'%.2f' % z + '.dat', file=writer)
        print('output xyz ' + '%.2f' % x + '%.2f' % y + '%.2f' % z + '.xyz', file=writer)
        writer.close()
        z+=0.01

xcoord()

[注意我知道以这种方式使用全局变量并不理想,但这是目前我可以了解代码并让它做我想做的唯一方法....]

执行此操作时,x、y 和 z 的值会根据需要增加,但(仅有时)输出值有几个小数位。

如何更改设置以使 x、y 和 z 仅保留 2 位小数?

任何帮助将不胜感激 - 干杯

4

2 回答 2

1

你试过round(n, 2)吗?这将只显示小数点后的两个数字。但是,请记住,这只会使它出现最多两个数字,实际表示仍然会大得多。这是因为有些数字不能用浮点数精确表示。

于 2013-09-10T08:44:17.220 回答
0

谢谢。

问题(这对你来说可能很明显,但对我来说不是,所以请耐心等待):

假设我将 x 的值打印到文本文件中,这样它只显示为 2dp。
然后将此文本文件用作 fortran 程序的输入:fortran 程序是将该值读取到 2dp(如屏幕上所示)还是作为完整值?

于 2013-09-16T08:31:09.260 回答