verticalmente saber pedaleando nadar miedo hondo flotar desde como cero boca arriba aprender agua objective-c c floating-point int

objective-c - saber - como flotar en el agua verticalmente



Objetivo C. FundiciĆ³n int para flotar (3)

Perdón por esa pregunta general, pero ¿cuál es el mejor método (lo más rápido posible y más seguro) para convertir int en flotante en ObjC:

primero

int b = 10; float a = [[NSNumber numberWithInt: b] floatValue]

Habrá una instancia NSNumber y mensajes numberWithInt , se enviará floatValue , ¿verdad?

Segundo

int b = 10; float a = (float) b;

Estilo C: ¿esto con llamar a alguna subrutina?

O de alguna otra manera?

¿Y por qué?


Realmente no veo la necesidad de un objeto NSNumber cuando hay disponible un tipo de NSNumber directa entre dos primitivas numéricas. La clase NSNumber no estaba destinada únicamente a la conversión de tipos de todos modos.


Como usted pregunta por la seguridad, lo primero que debe verificar es si el valor de su int cabe en un float . De lo contrario, estás perdiendo datos en silencio. A menos que el valor sea muy pequeño, no cabrá. Cambiaría a usar el double para que no tenga que preocuparse por esto, solo haga la tarea:

double d; d = i;

Rara vez se usa para las variables de tipo float , muy parecido a short ...


El tipo de estilo C es el más claro y fácil de leer. Si descubro un código que creó un objeto NSNumber solo para que haga la conversión, me preguntaría "¿Por qué lo hizo de esa manera? ¿Algo está sucediendo aquí aparte de una simple conversión tipo antiguo? ¿Qué me estoy perdiendo? "

En cuanto a la velocidad, sospecho que la conversión de tipo simple también sería más rápida: el objeto NSNumber necesitará realizar prácticamente las mismas operaciones para realizar la conversión, y además tendrá una sobrecarga adicional de creación de objetos y mensajes. Pero como en todos esos casos, no adivine, mida. Perfile su código para ver si la conversión es un cuello de botella que es lo suficientemente significativo como para ser digno de su atención.