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.
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
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
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:
# 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)
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)
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.
Saludos