2012-04-05 23 views
6

Ho due valori float, 'a' e 'b'.come calcolare il promemoria float per i due valori float

Ho bisogno di calcolare il promemoria di questi due valori float e deve essere un valore float.

Let

float a = 1.1; 
float b = 0.5; 

Così il resto 'r' dovrebbe essere valore preciso

cioè r = a% b

r = 1,1% 0,5

0.5) 1.1 (2 
     1.0 
    ______ 

     0.1 

    r = 0.1 

Ma causa un errore operando non valido per i valori float.

Come fare?

+3

Quale lingua? – Jon

+1

Perché questo è per java, C++, ogg-c AND c? lo stai usando in 4 progetti? – RvdK

+0

Non sembra Java, dal momento che '1.1% 0.5' è legale in Java. (E non importa quello che fa, non otterrà un valore "preciso" .Per i principianti, non avrà nemmeno un valore preciso per '1.1', poiché' 1.1' non può essere rappresentato esattamente nella maggior parte dei flottanti punto.) –

risposta

13

In C, C++ e Objective-C che sarebbe fmod.

1

lo hai dichiarato?

float r; 

devi poterlo fare prima che si possa fare alcun calcolo

così

float r; 

float a = 1.1; 
float b = 0.5; 

r = a % b; 
+0

In C (e C++?) Non è valido utilizzare i numeri in virgola mobile per gli operandi dell'operatore '%'. – JeremyP

5

uso fmod()

#include <math.h> 
double x,y,z; 
x = 1.1; 
y = 0.5; 
z = fmod(x,y) 

Non tforget il -lm flag di liker se si è su linux/unix/mac-osx /.

per ulteriori informazioni

$man fmod 
2

provare

float x = (float)(1.1 % 0.5); 
NSLog(@"%f",x); 

Spero che questo aiuti.

+0

@Ranga sì, naturalmente funzionerà anche in java. Ma non puoi usare fmod() in java. –

+1

% funziona solo con numeri interi (int)% (int) in C o C++ –

Problemi correlati