https://foro.gambas-es.org/viewtopic.php?f=16&t=3447&p=19339#p19339
-----------------------------------
Shell
Sabado, 26 Octobre 2013, 21:48

[Python Y Gambas] Ejemplo De Los Dolares Y Céntimos
-----------------------------------
Hola!.

Después de ver el ejemplo de Scott en el curso de Coursera sobre como va usando el tratado de cadenas y al final
Joe crea una aplicación mas interactiva, observo que en el ejemplo que hace Joe no se aprecia esto:

Si hablamos de céntimos, no podemos decir 12.0 céntimos. :-)

Hice el ejemplo en Gambas y si funciona.
[code linenumbers=false syntax=gambas]
Public Sub Main()  

  Print Convertir(11.23)
  Print Convertir(11.20) 
  Print Convertir(1.12)
  Print Convertir(12.01)
  Print Convertir(1.01)
  Print Convertir(0.01)
  Print Convertir(1.00)
  Print Convertir(0)  
End

'Convierte a plural la cadena si es necesario
Public Function convierteUnidades(valor As Integer, nombre As String) As String

  Dim resultado As String
  
  resultado = Str(valor) & " " & nombre
  If valor > 1 Then
    resultado = resultado & "s"
  Endif
  Return resultado
  
End

'Convierte de xx.yy a xx dolares y yy centimos
Public Function Convertir(valor As Float) As String

  Dim dolares As Integer
  Dim centimos As Integer
  Dim dolares_cadena As String
  Dim centimos_cadena As String
  
  ' Repartimos en dolares y centimos
  dolares = Int(valor)
  centimos = Round(100 * (valor - dolares))
  
  dolares_cadena = convierteUnidades(dolares, "dolar")
  centimos_cadena = convierteUnidades(centimos, "cent")
  
  'Convertimos a cadenas
  If dolares = 0 And centimos = 0 Then
    Return "Sin blanca!"
  Else If dolares = 0 Then
    Return centimos_cadena
  Else If centimos = 0 Then
    Return dolares_cadena
  Else
    Return dolares_cadena & " y " & centimos_cadena
  Endif
  
End
[/code]

En cambio en Python, se obseva el .0 al final de los céntimos, creo que Joe cambio algo.
Observemos el código de Scottt:
[code linenumbers=false syntax=python]
# Handle single quantity
def convert_units(val, name):
    result = str(val) + " " + name
	if val > 1:
        result = result + "s"
    return result
        
# convert xx.yy to xx dollars and yy cents
def convert(val):
    # Split into dollars and cents
    dollars = int(val)
    cents = round(100 * (val - dollars))

    # Convert to strings
    dollars_string = convert_units(dollars, "dollar")
    cents_string = convert_units(cents, "cent")

    # return composite string
    if dollars == 0 and cents == 0:
        return "Broke!"
    elif dollars == 0:
        return cents_string
    elif cents == 0:
        return dollars_string
    else:
        return dollars_string + " and " + cents_string
    
    
# Tests
print convert(11.23)
print convert(11.20) 
print convert(1.12)
print convert(12.01)
print convert(1.01)
print convert(0.01)
print convert(1.00)
print convert(0)
[/code]

Produce el .0 al final de céntimos.

Después de ver el ejemplo de Joe en el video no lo hace, pero el ejemplo para codeskulptor si. Donde crea la aplicación mas interactiva.
Supongo que de alguna forma (que no vi), le quita el .0.  :roll: 

Saludos


