Ou, mais especificamente, os flutuadores Python são C duplos.
habnabit
1
Bah usou float em vez de dobrar. Agora meu código está desativado por 0,0000000001 que dói
Evorlor
2
aliás, isso também funciona com notação de expoente. por exemplo: float('7.5606e-08')produz o flutuador python esperado.
drevicko
2
Com o meu python (versão 2.7.10), quando eu atribuir >>> x = "2342.34" e convertido para flutuar >>> float(x) eu fico 2342.34em vez do 2342.3400000000001relatado por @Mongoose
Bruce_Warrior
Use >>> 0.1 + 0.2para o dobro. >>> 0.1 + 0.6para flutuar.
User1510539
50
O operador decimal pode estar mais alinhado com o que você está procurando:
>>>from decimal importDecimal>>> x ="234243.434">>>printDecimal(x)234243.434
Respostas:
Ai está. Use float (que se comporta como e tem a mesma precisão que um duplo C, C ++ ou Java).
fonte
float('7.5606e-08')
produz o flutuador python esperado.>>> x = "2342.34"
e convertido para flutuar>>> float(x)
eu fico2342.34
em vez do2342.3400000000001
relatado por @Mongoose>>> 0.1 + 0.2
para o dobro.>>> 0.1 + 0.6
para flutuar.O operador decimal pode estar mais alinhado com o que você está procurando:
fonte
Lembre-se de que, se o número da sua string contiver mais de 15 dígitos significativos,
float(s)
será arredondado. Nesses casos, é melhor usarDecimal
Aqui está uma explicação e alguns exemplos de código: https://docs.python.org/3/library/sys.html#sys.float_info
fonte