在 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 floats 内部不能使用“十进制表示法”或“科学表示法”。这些只是输出格式。 “使用符号”是什么意思? 我的意思是,程序不会理解 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多进程简介及应用

以科学计数法 python 优雅地打印

Python数据类型和变量

Python科学计算系列9—逻辑代数

(数据科学学习手札20)主成分分析原理推导&Python自编函数实现

Python变量与数据类型-数据类型