On Mon, Mar 15, 2010 at 05:52:33PM +0100, José Luis Torre Hernández wrote: > El 15 de marzo de 2010 16:55, Kiko <kikocorre...@gmail.com> escribió: > > > El 15 de marzo de 2010 16:20, Daniel Garcia <d...@danigm.net> escribió: > > > >> El lun, 15-03-2010 a las 16:18 +0100, Daniel Garcia escribió: > >> > El lun, 15-03-2010 a las 16:00 +0100, marmolro escribió: > >> > > Para estos casos yo suelo sustituir el is_integer() por: > >> > > > >> > > > >> > > >>> round(64**(1./3),0) - 64**(1./3) < 10**-15 > >> > > True > >> > > > >> > > > >> > > El valor de la aproximación ya lo fijas en función de la precisión que > >> > > quieres. No lo conozco en detalle, pero supongo que se podría dar el > >> > > caso de "falsos positivos".... ¿alguien conoce una técnica mejor? > >> > > > >> > > > >> > > >> > Una forma podría ser: > >> > > >> > (x**(1./3))**3 == x > >> > >> Esto no vale para nada, quiero decir, sólo vale para saber que estás > >> teniendo un fallo de precisión. Me he liado entre unas cosas y otras. > >> > >> > >> _______________________________________________ > >> Python-es mailing list > >> Python-es@python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > >> > >> > > Yo, si hago: > > > > int(nro**(1./3)) me da siempre la parte entera del cubo del número, sea un > > cubo perfecto o no. > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es@python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > Lo primero que habría que hacer es definir un poco más el problema. > Se trata de números enteros o de números reales. > > Saludos > José Luis Torre
Mira a ver si te funciona esto: import math l = lambda x: not math.modf(x**(1.0/3))[0] l(8) Saludos. > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/