https://foro.gambas-es.org/viewtopic.php?f=1&t=7857
-----------------------------------
calcena
Viernes, 03 Enero 2020, 10:28

Canitdad De Decimales
-----------------------------------
Buenos días,
después de buscar por el foro un tema concreto de la función Round no acabo de que me funcione.
El tema es el siguiente, realizo un Round para que me traiga dos decimales Round(string , 2) he probado Round(cFloat(string),2) ....
pero nada no consigo sacar dos decimales de un campo string.

Saludos.


-----------------------------------
tincho
Viernes, 03 Enero 2020, 12:30

Re: Canitdad De Decimales
-----------------------------------
[quote user="calcena" post="47348"]...El tema es el siguiente, realizo un Round para que me traiga dos decimales Round(string , 2) he probado Round(cFloat(string),2) ....
pero nada no consigo sacar dos decimales de un campo string...[/quote]
¿Que string exactamente? Te lo pregunto porque dependiendo del sistema cuando usas coma o punto gambas no se comporta igual.
Te recomiendo que hagas la prueba reemplazando en el string la coma por punto o viceversa antes de convertir el string en float, a ver que sucede.
De todas maneras me parece que la manera correcta seria:
[code linenumbers=false syntax=gambas]
      If InStr(str, ",") > 0 Then
        str = Replace(str, ",", ".") ' Probar el caso inverso si es que este no funciona
      Endif
      flo = Round(CFloat(str), 2)
[/code]
Saludos.


-----------------------------------
calcena
Viernes, 03 Enero 2020, 14:20

Re: Canitdad De Decimales
-----------------------------------
[quote user="tincho" post="47350"][quote user="calcena" post="47348"]...El tema es el siguiente, realizo un Round para que me traiga dos decimales Round(string , 2) he probado Round(cFloat(string),2) ....
pero nada no consigo sacar dos decimales de un campo string...[/quote]
¿Que string exactamente? Te lo pregunto porque dependiendo del sistema cuando usas coma o punto gambas no se comporta igual.
Te recomiendo que hagas la prueba reemplazando en el string la coma por punto o viceversa antes de convertir el string en float, a ver que sucede.
De todas maneras me parece que la manera correcta seria:
[code linenumbers=false syntax=gambas]
      If InStr(str, ",") > 0 Then
        str = Replace(str, ",", ".") ' Probar el caso inverso si es que este no funciona
      Endif
      flo = Round(CFloat(str), 2)
[/code]
Saludos.[/quote]

Buenas algo parecido es lo que tengo te comento:
[code linenumbers=false syntax=gambas]
  totalSaldo = totIngresos - totGastos ' Provienene de DB viene con [ . ]
  totalSaldo = CFloat(totalSaldo) ' Conversión a Float
  sBody &= "" & Round(totalSaldo, 2) & ""
[/code]

en la línea html donde traigo el redondeo me trae 100 cuando debería ser 96.93, creo que es algo en la funcion Round que me está redondeando al alza pero muy extraño.

Saludos y gracias.


-----------------------------------
cogier
Viernes, 03 Enero 2020, 17:47

Re: Canitdad De Decimales
-----------------------------------
[quote]en la línea html donde traigo el redondeo me trae 100 cuando debería ser 96.93, creo que es algo en la funcion Round que me está redondeando al alza pero muy extraño.[/quote]

[code linenumbers=false syntax=gambas]sBody &= "" & Round(totalSaldo, 2) & ""[/code]
Cambie el código de arriba por el de abajo.
[code linenumbers=false syntax=gambas]sBody &= "" & Round(totalSaldo, -2) & ""[/code]


-----------------------------------
tincho
Viernes, 03 Enero 2020, 18:01

Re: Canitdad De Decimales
-----------------------------------
Cogier tiene razón, el parámetro debe ser  [b]-2[/b]
Saludos.


-----------------------------------
calcena
Viernes, 03 Enero 2020, 20:07

Re: Canitdad De Decimales
-----------------------------------
[quote user="cogier" post="47360"][quote]en la línea html donde traigo el redondeo me trae 100 cuando debería ser 96.93, creo que es algo en la funcion Round que me está redondeando al alza pero muy extraño.[/quote]

[code linenumbers=false syntax=gambas]sBody &= "" & Round(totalSaldo, 2) & ""[/code]
Cambie el código de arriba por el de abajo.
[code linenumbers=false syntax=gambas]sBody &= "" & Round(totalSaldo, -2) & ""[/code][/quote]


Efectivamente!! fantástico, ahora sale como toca, gracias a los dos por vuestros acertados comentarios.


