当前位置:  开发笔记 > 编程语言 > 正文

从C中的浮点数中提取小数部分

如何解决《从C中的浮点数中提取小数部分》经验,为你挑选了3个好方法。

我们如何提取浮点数的小数部分并将小数部分和整数部分存储到两个单独的整数变量中?



1> Johannes Sch..:

你使用的modf功能:

double integral;
double fractional = modf(some_double, &integral);

您也可以将其强制转换为整数,但要注意您可能会溢出整数.结果是不可预测的.


@penu这是因为您使用%d来打印double。这是工作代码:http://codepad.org/kPGKtcZi

2> Chris Bunch..:

试试这个:

int main() {
  double num = 23.345;
  int intpart = (int)num;
  double decpart = num - intpart;
  printf("Num = %f, intpart = %d, decpart = %f\n", num, intpart, decpart);
}

对我来说,它产生:

Num = 23.345000, intpart = 23, decpart = 0.345000

这似乎是你要求的.


int decpart = 100000*(num - intpart);
这种方法易受一些令人讨厌的浮点问题的影响.尝试设置`num = 1.1`作为快速示例.作为浮点数`decpart`不能代表`0.1`.

3> Trevor Boyd ..:

快速"坚果壳"最明显的答案似乎是:

#define N_DECIMAL_POINTS_PRECISION (1000) // n = 3. Three decimal points.

float f = 123.456;
int integerPart = (int)f;
int decimalPart = ((int)(f*N_DECIMAL_POINTS_PRECISION)%N_DECIMAL_POINTS_PRECISION);

您可以通过更改N_DECIMAL_POINTS_PRECISION以满足您的需要来更改所需的小数点数.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有