首页 > 解决方案 > 将字符串转换为数字(浮点或整数,取决于输入的变量)

问题描述

在 JavaScript 中,我们有 +number ,它根据字符串的值将字符串转换为数字,如下所示:

x = '123' => +x returns 123

y = '12.3' => +y returns 12.3

现在,如果我在 python 中使用 int 它会返回:

x = '123' => int(x) returns 123

y = '12.3' => int(y) returns 12 which is wrong as it should return 12.3

而如果我使用浮点数:

x = '123' => float(x) returns 123.0 which is wrong as it should return 123 only though I know 123.0 is same as 123 but I want to parse it to some other query language which identifies the numbers as mentioned above.

y = '12.3' => float(y) returns 12.3

标签: python-3.x

解决方案


JavaScript 不像其他语言(如 C)那样具有整数类型,因此123在 JS 中实际上123.0存储为双精度,但显示时没有小数。(BigInt如果你想进一步学习,但它本来是123n)。

在 Python 中,您可以使用literal_eval从字符串表示中获取数字(文字)值:

import ast

ast.literal_eval("123")    # -> 123   (int)
ast.literal_eval("123.")   # -> 123.0 (float)
ast.literal_eval("123.0")  # -> 123.0 (float)

推荐阅读