将Python中的浮点数转换为科学数字
因此,我在Python中有一个应用程序,它计算“PV=nRT”化学方程式中的变量数。代码如下所示:将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('_____________________')
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)