回覆列表
-
1 # 使用者4788302516611
-
2 # lanfengkd
原型函式
double fmod ( double numerator, double denominator );
例如:
#include
#include
int main ()
{
printf ("fmod of 5.3 / 2 is %lf\n", fmod (5.3,2) );
printf ("fmod of 18.5 / 4.2 is %lf\n", fmod (18.5,4.2) );
return 0;
}
fmod of 5.3 / 2 is 1.300000
fmod of 18.5 / 4.2 is 1.700000
除法取餘。
float與double型別的記憶體分佈,精度和範圍 記憶體分佈: C/c++的浮點資料型別有float和double兩種。 float大小為4位元組,記憶體中的儲存方式如下: 符號位(1bit)指數(8bit)尾數(23bit) double大小為8位元組,記憶體中的儲存方式如下: 符號位(1bit)指數(11bit)尾數(52bit) 符號位決定浮點數的正負,0正1負。指數和尾數均從浮點數的二進位制科學計數形式中獲取。 如,十進位制浮點數2.5的二進位制形式為10.1,轉換為科學計數法形式為(1.01)*(10^1)。 由此可知指數為1,尾數(即科學計數法的小數部分)為01。 根據浮點數的儲存標準,指數用移碼錶示。0的float型別移碼為127(0111 1111),0的double型別移碼為1023(011 1111 1111)。運算時,在0 的移碼基礎上加指數,得到的就是記憶體中指數的表示形式。尾數則直接填入,如果空間多餘則以0補齊,如果空間不夠則0舍1入。 所以float和 double型別分別表示的2.5如下(二進位制): 符號位 指數 尾數 0 1000 0000 010 0000 0000 0000 0000 0000 0 100 0000 0000 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 精度: float和double的精度是由尾數的位數來決定的。 float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字; double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。 範圍: float類的指數是8位移碼,最大為127最小為-127,127用來作2的指數,為2^127,約等於 1.7014*10^38, 而我們知道,floa示數範圍約為- 3.4*10^38-------3.4*10^38, 這是因為尾數都為1時,即1.11..11約為2,因此浮點數的範圍就出來了.double的情況與float完全相似.