Tengo el valor 25.00
en a float
, pero cuando lo imprimo en pantalla lo es 25.0000000
.
¿Cómo puedo mostrar el valor con solo dos decimales?
objective-c
formatting
floating-point
mskfisher
fuente
fuente
Respuestas:
No se trata de cómo se almacena el número, se trata de cómo lo está mostrando. Al convertirlo en una cadena, debe redondear a la precisión deseada, que en su caso es dos decimales.
P.ej:
%.02f
le dice al formateador que formateará un float (%f
) y que debe redondearse a dos lugares y debe rellenarse con0
s.P.ej:
fuente
25
...@"%.f"
hace el truco. Lo que está escrito arriba, no .@"%.*f", decimalPlaces, number
%03.f = 025
Aquí hay algunas correcciones.
Swift 3
Obj-C
y así...
fuente
También puede intentar usar NSNumberFormatter:
Es posible que también necesite establecer el formato negativo, pero creo que es lo suficientemente inteligente como para descubrirlo.
fuente
Hice una extensión rápida basada en las respuestas anteriores
uso:
fuente
En Swift Language, si desea mostrar, debe usarlo de esta manera. Para asignar un valor doble en UITextView, por ejemplo:
Si desea mostrar en el REGISTRO como ocurre con Objective-c usando NSLog (), en Swift Language puede hacerlo de esta manera:
fuente
EN el objetivo c, si está tratando con matrices de caracteres regulares (en lugar de punteros a NSString) también podría usar:
OTOH, si lo que desea es almacenar ese valor en una matriz de caracteres que podría usar:
fuente
El problema con todas las respuestas es que multiplicar y luego dividir resulta en problemas de precisión porque usaste la división. Aprendí esto hace mucho tiempo de la programación en un PDP8. La forma de resolver esto es:
Por lo tanto, 15.6578 devuelve solo 15.66 y no 15.6578999 o algo no deseado como ese.
El nivel de precisión que desea depende de usted. Simplemente no divida el producto, multiplíquelo por el equivalente decimal. No se requiere conversión de cadena divertida.
fuente
en el objetivo -c si desea mostrar el valor flotante en un número decimal 2 y luego pasar el argumento que indica cuántos puntos decimales desea mostrar, por ejemplo, 0.02f imprimirá 25.00 0.002f imprimirá 25.000
fuente
Aquí hay algunos métodos para formatear dinámicamente de acuerdo con una precisión:
p.ej
=> 2.3453
=> 2
=> 2.35 (redondear hacia arriba)
fuente
Otro método para Swift (sin usar NSString):
PD: esta solución no funciona con el tipo CGFloat solo probado con
Float
&Double
fuente
Usar
NSNumberFormatter
conmaximumFractionDigits
lo siguiente:Y obtendrás
12.35
fuente
Si también necesita un valor flotante:
fuente
fuente