Necesito imprimir un valor flotante en el área de ancho limitado más eficientemente. Estoy usando un NSNumberFormatter
, y establecí dos números después del punto decimal como el predeterminado, de modo que cuando tengo un número como 234.25
se imprime como está: 234.25
. Pero cuando tengo 1234.25
quiero que se imprima como: 1234.3
, y 11234.25
debe imprimirse 11234
.Limitación de la cantidad fraccional y total de dígitos al formatear un flotador para mostrar
Necesito un máximo de dos dígitos después del punto, y un máximo de cinco dígitos en total si tengo dígitos después del punto, pero también debe imprimir más de cinco dígitos si la parte entera tiene más.
No veo la posibilidad de limitar el número total de dígitos en NSNumberFormatter
. ¿Esto significa que debería escribir mi propia función para formatear números de esta manera? Si es así, ¿cuál es la forma correcta de obtener el recuento de dígitos en el número entero y partes fraccionarias de un número? También preferiría trabajar con CGFLoat
, en lugar de NSNumber
para evitar conversiones de tipo adicionales.
@JacquesCousteau que sé; sigue siendo un ejemplo, ¿verdad? –
Gracias. Esta implementación parece bastante universal, pero me preocupa la eficiencia. ¿Se puede usar algo más eficiente que NSString? ¿O no hay forma de contar la cantidad de dígitos en el número además de contar la longitud de la cuerda? Voy a hacer esta conversión continuamente en cada cuadro de animación durante todo el tiempo de ejecución del programa. ¿No será difícil? – BartoNaz
@BartoNaz: el logaritmo de base 10 de un número es aproximadamente la longitud - 1 de sus dígitos enteros: 'log10f (11123.25) -> 4.046221' –