如何显示数字的单位?

时间:2019-05-03 15:46:56

标签: python python-3.x

我写了一个将笛卡尔坐标转换为椭圆坐标的代码,它可以工作,但是有些变量的单位是度,有些变量的单位是米。我必须显示差异,但我不知道如何。

def ell2xyz(latitude,longitude,ellHeight):
    import math
    a=6378137.0000
    b=6356752.3141
    e=(math.sqrt(((a**2)-(b**2))/(a**2)))
    N=a/math.sqrt((1-((e**2)*(math.sin(latitude)**2))))
    x=(float((N+ellHeight)*math.cos(latitude)*math.cos(longitude)))
    y=(float(N+ellHeight)*math.cos(latitude)*math.sin(longitude))
    z=(float((1-e**2)*(N+ellHeight))*math.sin(latitude))
    return x,y,z

latitude,longitude,ellHeight=ell2xyz(41.00000000,29.00000000,500.0000)
print(latitude,longitude,ellHeight)

3 个答案:

答案 0 :(得分:2)

我建议您使用format方法

print("{} degrees {} degrees {} meters".format(latitude,longitude,ellHeight))

答案 1 :(得分:1)

问题是您所有的变量(纬度,经度和ellHeight)都是浮点数,它们只是数字。单位是对我们人类有意义的抽象,但是您的代码无法知道您希望使用哪些单位。我相信您只想在屏幕上显示单位。为此,您必须手动告诉什么是什么。

以下任何一项都可以使用:

print(latitude, "degrees,", longitude, "degrees,", ellHeight, "meters")
print("{} degrees, {} degrees, {} meters".format(latitude, longitude, ellHeight))
print(str(latitude) + " degrees, " + str(longitude) + " degrees, " + str(ellHeight) + " meters")

结果将是:

  

4711572.482946889度,4179837.81128292度,-1005107.7207451101米

答案 2 :(得分:-1)

您可以使用列表,因此将同时具有浮点数和字符串:

def ell2xyz(latitude,longitude,ellHeight):
    import math
    a=6378137.0000
    b=6356752.3141
    e=(math.sqrt(((a**2)-(b**2))/(a**2)))
    N=a/math.sqrt((1-((e**2)*(math.sin(latitude)**2))))
    x=(float((N+ellHeight)*math.cos(latitude)*math.cos(longitude)))
    y=(float(N+ellHeight)*math.cos(latitude)*math.sin(longitude))
    z=(float((1-e**2)*(N+ellHeight))*math.sin(latitude))
    if x > 0:
        x = [x,"N"]
    else:
        x = [x,"S"]
    if y > 0:
        y = [y,"E"]
    else:
        y= [y,"W"]
    z = [z, "m"]
    return x,y,z


latitude,longitude,ellHeight=ell2xyz(41.00000000,29.00000000,500.0000)
print(latitude,longitude,ellHeight)

结果: [4711572.4829468895, 'N'] [4179837.81128292, 'E'] [-1005107.7207451101, 'm']