Ejemplo n.º 1
0
    def _print_Float(self, expr):
        exposant = None
        if self._settings['mode_scientifique']:
            # Conversion en écriture scientifique.
            puissance = int(floor(log(expr, 10)))
            flottant = self._float_evalf(expr*10**-puissance)
            mantisse = StrPrinter._print_Float(self, flottant)
            exposant = str(puissance)
        else:
            chaine = StrPrinter._print_Float(self, self._float_evalf(expr))
            if 'e' in chaine:
                # Déjà en mode scientifique (ex: 1.3e-15)
                mantisse, exposant = chaine.split('e')

        if exposant is not None:
            # Affichage en mode scientifique
            mantisse = mantisse.rstrip('0')
            # On laisse la mantisse sous forme de flottant.
            # Ainsi, '2,00000*10^-8' devient '2,0*10^-8', et non '2*10^-8'.
            # Lorsqu'on sauvegarde l'état de l'interprète de la calculatrice,
            # les décimaux du type 0,00000002 sont ainsi sauvegardés sous
            # forme décimale, et non sous forme fractionnaire.
            if mantisse.endswith('.'):
                mantisse += '0'
            exposant = exposant.lstrip('+')
            return '%s*10^%s' % (mantisse, exposant)
        else:
            # Par contre, lorsque les décimaux sont des entiers, inutile de les
            # sauvegarder sous forme décimale.
            return chaine.rstrip('0').rstrip('.')
Ejemplo n.º 2
0
 def _print_Float(self, expr):
     string = StrPrinter._print_Float(self, expr)
     return string.replace('e+', '*10^').replace('e-', '*10^-')
Ejemplo n.º 3
0
 def _print_Float(self, expr):
     string = StrPrinter._print_Float(self, expr)
     return string.replace('e+', '*10^').replace('e-', '*10^-')