为什么int('。0')给出ValueError?

时间:2018-11-20 01:53:20

标签: python floating-point type-conversion int valueerror

我以// ================Stackoverflow_53384931Kt.class ================= // class version 52.0 (52) // access flags 0x31 public final class Stackoverflow_53384931Kt { // access flags 0x1A // signature Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>; // declaration: kotlin.jvm.functions.Function0<kotlin.Unit> private final static Lkotlin/jvm/functions/Function0; printKotlin @Lorg/jetbrains/annotations/NotNull;() // invisible // access flags 0x19 // signature ()Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>; // declaration: kotlin.jvm.functions.Function0<kotlin.Unit> getPrintKotlin() public final static getPrintKotlin()Lkotlin/jvm/functions/Function0; @Lorg/jetbrains/annotations/NotNull;() // invisible L0 LINENUMBER 3 L0 GETSTATIC Stackoverflow_53384931Kt.printKotlin : Lkotlin/jvm/functions/Function0; ARETURN L1 MAXSTACK = 1 MAXLOCALS = 0 // access flags 0x8 static <clinit>()V L0 LINENUMBER 3 L0 GETSTATIC Stackoverflow_53384931Kt$printKotlin$1.INSTANCE : LStackoverflow_53384931Kt$printKotlin$1; CHECKCAST kotlin/jvm/functions/Function0 PUTSTATIC Stackoverflow_53384931Kt.printKotlin : Lkotlin/jvm/functions/Function0; RETURN MAXSTACK = 1 MAXLOCALS = 0 @Lkotlin/Metadata; ... // access flags 0x18 final static INNERCLASS Stackoverflow_53384931Kt$printKotlin$1 null null // compiled from: stackoverflow-53384931.kt } // ================Stackoverflow_53384931Kt$printKotlin$1.class ================= // class version 52.0 (52) // access flags 0x30 // signature Lkotlin/jvm/internal/Lambda;Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>; // declaration: Stackoverflow_53384931Kt$printKotlin$1 extends kotlin.jvm.internal.Lambda implements kotlin.jvm.functions.Function0<kotlin.Unit> final class Stackoverflow_53384931Kt$printKotlin$1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function0 { // access flags 0x1041 public synthetic bridge invoke()Ljava/lang/Object; ALOAD 0 INVOKEVIRTUAL Stackoverflow_53384931Kt$printKotlin$1.invoke ()V GETSTATIC kotlin/Unit.INSTANCE : Lkotlin/Unit; ARETURN MAXSTACK = 1 MAXLOCALS = 1 // access flags 0x11 public final invoke()V L0 LINENUMBER 4 L0 LDC "Hello Kotlin" ASTORE 1 L1 GETSTATIC java/lang/System.out : Ljava/io/PrintStream; ALOAD 1 INVOKEVIRTUAL java/io/PrintStream.print (Ljava/lang/Object;)V L2 L3 LINENUMBER 5 L3 RETURN L4 LOCALVARIABLE this LStackoverflow_53384931Kt$printKotlin$1; L0 L4 0 MAXSTACK = 2 MAXLOCALS = 2 // access flags 0x0 <init>()V ALOAD 0 ICONST_0 INVOKESPECIAL kotlin/jvm/internal/Lambda.<init> (I)V RETURN MAXSTACK = 2 MAXLOCALS = 1 // access flags 0x19 public final static LStackoverflow_53384931Kt$printKotlin$1; INSTANCE // access flags 0x8 static <clinit>()V NEW Stackoverflow_53384931Kt$printKotlin$1 DUP INVOKESPECIAL Stackoverflow_53384931Kt$printKotlin$1.<init> ()V PUTSTATIC Stackoverflow_53384931Kt$printKotlin$1.INSTANCE : LStackoverflow_53384931Kt$printKotlin$1; RETURN MAXSTACK = 2 MAXLOCALS = 0 @Lkotlin/Metadata; ... OUTERCLASS Stackoverflow_53384931Kt null // access flags 0x18 final static INNERCLASS Stackoverflow_53384931Kt$printKotlin$1 null null // compiled from: stackoverflow-53384931.kt // debug info: SMAP ... }

的形式将浮点数传递为字符串格式

0.0是有效的浮点数,那么为什么给出错误?

3 个答案:

答案 0 :(得分:3)

摘自int的文档:

  

如果x不是数字或给出基数,则x必须是字符串,   字节或字节数组实例,表示基数中的整数文字   基础。 (可选)文字可以以+或-开头(不带空格)   介于两者之间),并被空白包围。

所以它给你ValueError,因为字符串'.0'不代表整数文字。

答案 1 :(得分:2)

因为您可以一次键入一次强制转换。例如,您可以将float转换为int或将string转换为int。不是浮点字符串,这里是2步。

答案 2 :(得分:0)

如果您删除引号并将其设置为浮动,则可以执行以下操作:

"types": ["webpack-env"]

但是如果字符串内部是浮点数,则字符串不起作用,因为它们会认为它是一个数字,并且会断言compilerOptions不是数字值,而上述方法起作用的原因是:

tsconfig.json

并且:

int(.1)

工作。

请注意,即使字符串中的实际浮点数也不能转换为整数:

'.'