将Python中的浮点数转换为科学数字

将Python中的浮点数转换为科学数字,python,python-3.x,Python,Python 3.x,因此,我在Python中有一个应用程序,它计算“PV=nRT”化学方程式中的变量数。代码如下所示: r = 0.082 # Variables p = float(input('Pressure = ')) p_unit = input('Unit = ') print('_____________________') v = float(input('Volume = ')) v_unit = input('Unit = ') print('_____________________')

因此,我在Python中有一个应用程序,它计算“PV=nRT”化学方程式中的变量数。代码如下所示:

r = 0.082
# Variables
p = float(input('Pressure = '))
p_unit = input('Unit = ')

print('_____________________')

v = float(input('Volume = '))
v_unit = input('Unit = ')

print('_____________________')

n = float(input('Moles = '))

print('_____________________')

t = float(input('Temperature = '))
t_unit = input('Unit = ')

# Unit Conversion
if p_unit == 'bar':
    p = p * 0.987

if v_unit == 'cm3':
    v = v / 1000

if v_unit == 'm3':
    v = v * 1000

if t_unit == 'c':
    t = t + 273

if t_unit == 'f':
    t = ((t - 32) * (5 / 9)) + 273


# Solve Equation
def calc():
    if p == 000:
        return (n * r * t) / v
    if v == 000:
        return (n * r * t) / p
    if n == 000:
        return (p * v) / (r * t)
    if t == 000:
        return (p * v) / (n * r)
最后,我运行函数得到结果。但问题是我想将结果转换成一个科学数字(例如0.005=5 x 10^-3)。我尝试了以下解决方案:

def conv_to_sci(num):
    i = 0
    if num > 10:
        while num > 10:
            num / 10
            i = i - 1
    if num < 10:
        while num < 10:
            num * 10
            i = i + 1
    return num + "x 10^" + i
def conv_to_sci(num):
i=0
如果num>10:
当num>10时:
num/10
i=i-1
如果num<10:
当num<10时:
数字*10
i=i+1
返回num+“x10^”+i

但它不起作用。有什么问题吗?

我会用numpy来获取科学符号

import numpy as np
num = 0.005
num_sc = np.format_float_scientific(num)
>>> num_sc
'5.e-03'

使用
str.format

"{:.0e}".format(0.005)
这将打印:
'5e-03'

或者


将给出:
'5x10^3'

这是否回答了您的问题?您可能想使用说明
num/10
num*10
修改
num
?您必须使用
/=
*=
就地修改变量。您好!如果任何答案解决了您的问题,请通过选择答案旁边的复选标记来接受答案。谢谢numpy就是一个很大的依赖。标准中有更好的匹配library@ArthurHv你说得对。也许我最好用十进制,对吗?我做了一些研究,使用“%.2E”%Decimal('your_num')可以打印科学符号,但无法使用它,因为它是一个普通字符串。
def conv_to_sci(num):
    i = 0
    while int(num) != num:
        num *= 10
        i += 1
    return "{0} x 10^{1}".format(int(num), i)
conv_to_sci(0.005)