变量中保存的数字精度

时间:2013-09-10 08:38:39

标签: python python-3.x

我有以下代码:

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()

[N.B。我知道以这种方式使用全局变量并不理想,但这是目前唯一能让我理解代码并让它做我想做的事情的方式....]

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

如何更改设置,使x,y和z仅为2位小数?

任何帮助都将受到赞赏 - 干杯

2 个答案:

答案 0 :(得分:1)

你试过round(n, 2)吗?这将在小数点后仅显示两个数字。但是,请记住,这只会使它看起来最多两个数字,真正的表示仍然会更大。这是因为某些数字无法使用浮点数精确表示。

答案 1 :(得分:0)

感谢。

问题(这对您来说可能显而易见但对我不是那么请耐心等待)但是:

让我说我将x的值打印到文本文件中,这样它只显示为2dp 然后将此文本文件用作fortran程序的输入: fortran程序是否将值读取为2dp(如屏幕上所示)或全值?