在 Python 中为变量分配科学记数法
Posted
技术标签:
【中文标题】在 Python 中为变量分配科学记数法【英文标题】:Assign scientific notation to variable in Python 【发布时间】:2015-01-29 19:36:47 【问题描述】:我试图请求一个浮点变量,然后将其科学记数法分配给它,然后在以下操作中使用该记数法。如,我希望程序实际使用符号,而不仅仅是返回结果。 我设法使用打印功能转换变量:
def estim(abs(x)):
a=print(":.3e".format(x))
return a
然而,这实际上并没有赋予 x 科学价值。然后我尝试了
b=float(a)
但是 a 是 None 类型,所以它不起作用。有什么帮助吗?
编辑:科学记数法是指 X.YYYe+Z, 例如:31234.34234 -> 3.12e+04
【问题讨论】:
好吧,你的代码没有意义。也许,a=":.3e".format(x)
会起作用?
在 Python float
s 内部不能使用“十进制表示法”或“科学表示法”。这些只是输出格式。 “使用符号”是什么意思?
我的意思是,程序不会理解 44432.12,而是将其视为 4.44*10^4,例如,实际上是 44400。@ForceBru 的建议似乎有效,谢谢。
@L.R. 31234.34234 -> 3.12e+04
... 你需要a=":.2e".format(x)
而不是a=":.3e".format(x)
。 (现在不要编辑)
你想用这个号码做什么?科学记数法是一种显示数字的方法。它不会改变数字是什么。因此,如果您真正想要的是使用它的字符串表示,那么“使用科学记数法中的数字”才有意义。
【参考方案1】:
你需要使用a=":.3e".format(x)
这是一个例子
x=246789;
a=":.3e".format(x);
print a;
print float(a);
输出
2.468e+05
246800.0
【讨论】:
【参考方案2】:如果你做":.3e".format(x)
你会得到小数点后3位,即
>>> a = 31234.34234
>>> ":.3e".format(a)
'3.123e+04'
要得到你想要的,你需要做":.2e".format(x)
。
>>> ":.2e".format(a)
'3.12e+04'
>>> float(":.2e".format(a))
31200.0
将其转换回float
将为您提供原始值
作为一个函数
def estim(x):
x = abs(x)
a=(":.2e".format(x))
print(a)
return a
提示:
您可以使用%
(可能已弃用)
>>> a = 31234.34234
>>> "%e"%a
'3.123434e+04'
【讨论】:
您提供的estim
函数的代码不起作用:“SyntaxError: invalid syntax。”【参考方案3】:
打印的返回值始终为 None 我怀疑您需要的更多是:
def estim(x):
a=":.3e".format(abs(x))
print a
return a
【讨论】:
以上是关于在 Python 中为变量分配科学记数法的主要内容,如果未能解决你的问题,请参考以下文章
(数据科学学习手札70)面向数据科学的Python多进程简介及应用