2012-04-05 31 views
6

Tôi có hai giá trị float, 'a' và 'b'.cách tính toán nhắc nhở phao cho hai giá trị float

Tôi cần tính toán nhắc nhở của hai giá trị nổi này và nó phải là giá trị float.

Hãy

float a = 1.1; 
float b = 0.5; 

Vì vậy, thời gian còn lại 'r' nên giá trị chính xác

tức là r = a% b

r = 1,1% 0,5

0.5) 1.1 (2 
     1.0 
    ______ 

     0.1 

    r = 0.1 

Nhưng nó gây ra một toán hạng lỗi không hợp lệ cho các giá trị float.

Cách thực hiện?

+3

Ngôn ngữ nào? – Jon

+1

Tại sao điều này cho java, C++, target-c AND c? bạn sử dụng nó trong 4 dự án? – RvdK

+0

Nó không giống như Java, vì '1.1% 0.5' là hợp pháp trong Java. (Và không có vấn đề gì anh ta làm, anh ta sẽ không nhận được một giá trị "chính xác". Đối với người mới bắt đầu, anh ta thậm chí sẽ không có giá trị chính xác cho '1.1', vì' 1.1' không thể được biểu diễn chính xác trong hầu hết các máy trôi nổi điểm.) –

Trả lời

13

Trong C, C++ và Objective-C sẽ là fmod.

1

bạn đã khai báo?

float r; 

bạn phải làm điều đó trước khi bạn có thể làm bất kỳ tính toán

nên

float r; 

float a = 1.1; 
float b = 0.5; 

r = a % b; 
+0

Trong C (và C++?), Nó không hợp lệ khi sử dụng các số dấu phẩy động cho toán hạng của toán tử '%'. – JeremyP

5

sử dụng fmod()

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

Đừng tforget các -lm liker flag nếu bạn đang sử dụng linux/unix/mac-osx /.

để biết thêm

$man fmod 
2

Thử

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

Hope this helps.

+0

@Ranga có tất nhiên, điều này cũng sẽ hoạt động trong java. Nhưng bạn không thể sử dụng fmod() trong java. –

+1

% chỉ hoạt động với số nguyên (int)% (int) trong C hoặc C++ –

Các vấn đề liên quan