C

时间:2016-12-13 22:48:19

标签: c math division

我真的不知道如何解释这个(这就是为什么标题是模糊的)但是我需要一种方法来使C以某种方式分裂,我需要做出c除以例如,答案中的小数(除了余数);

而不是5.21 / .25 = 20.84 我需要这个5.21 / .25 = *20* Remainder = *.21*

我找到了如何使用Fmod()查找剩余部分,但如何找到20

谢谢〜

2 个答案:

答案 0 :(得分:2)

如何使用隐式转换?

float  k = 5.21 / .25;
int n = k;
k -= n;

结果

k = .84
n = 20
如果你不需要余下的话,

仅使用整数也可以完成工作

int k = 5.21 / .25

会自动截断k并获取k = 20

答案 1 :(得分:2)

使用double modf(double value, double *iptr)提取FP编号的整数部分。

  

modf函数将参数值分解为整数和小数部分,每个部分与参数具有相同的类型和符号。 C11§7.12.6.122

#include <math.h>
#include <stdio.h>

int main() {
  double a = 5.21;
  double b = 0.25;
  double q = a / b;
  double r = fmod(a, b);
  printf("quotient: %f\n", q);
  printf("remander: %f\n", r);
  double ipart;
  double fpart = modf(q, &ipart);
  printf("quotient i part: %f\n", ipart);
  printf("quotient f part: %f\n", fpart);
  return 0;
}

输出

quotient: 20.840000
remander: 0.210000
quotient i part: 20.000000
quotient f part: 0.840000

由于范围,精度和标志问题的限制,使用int会产生问题。