usuario tiene separar saber real quitar que programa por parte número numero ingresado extraer escriba entregue entera determinar decimales cuantos como objective-c xcode floating-point

objective-c - tiene - parte entera en java



Obtener la parte decimal de un número flotante (7)

Hay una familia de funciones fmod, por ejemplo, fmod (18.30, 1.0), fmodf (18.30, 1.0), etc.

#include <stdio.h> #include <math.h> int main (int argc, const char * argv[]) { // insert code here... printf("%f/n", fmod(18.30, 1.0)); return 0; }

Necesito sacar la parte decimal de un número flotante, por ejemplo:

flotante x = 18.30;

Necesito una forma de obtener el ''.30'' en otro carro ... así que tendré un flotador igual a 18.30 y otro igual a .30

¿Algunas ideas?


La función modf() hace esto más directamente que fmodf() .


No estoy seguro de si hay una función que esté exactamente en el lugar que desea pero puede usar esto:

x - floor(x)


La respuesta aceptada arriba (x - piso (x)) funciona para números positivos pero no lo correcto para números negativos. Use trunc () en su lugar:

x - trunc(x)

Pero la solución fmod () es la que se debe usar si me preguntas:

fmod(x, 1)


Nota: use modf o fmod como se sugiere en otras respuestas.

Pero no espere tener exactamente el mismo número que atof ("0,30"), como sugiere su solicitud de igualdad.

De hecho, sucede que atof ("18.30") es el float más cercano a atof ("18.0") + atof ("0.30"), pero esta operación no es exacta, tiene un error de redondeo, como cualquier suma de atof ( "0,30") con un entero> 0.

Entonces cuando restas la parte entera, no hay razón para encontrar atof ("0.30") atrás, solo encuentras algo cerca de atof ("0.30").

Expresado en Squeak / Pharo Smalltalk (se usa doble precisión aquí)

(1 to: 100) count: [:i | 0.3 + i = (3/10+i) asFloat].

da

-> 100

Pero:

(1 to: 100) count: [:i | (3/10+i) asFloat - i = 0.3].

da

-> 0


x = 3.5

y = parseInt (3.5)

fraction_part = (xy);


La mejor manera que encontré usando los tipos de variables Objective-C es la siguiente:

CGFloat floatingPointNumber = 18.30; NSInteger integerNumber = floatingPointNumber; CGFloat floatingPointNumberWithoutTheInteger = floatingPointNumber - integerNumber;

Los siguientes son los resultados cuando se ejecutan: