首页 > 解决方案 > 在c ++ float中使用小数点前后的值?

问题描述

double f;
cin >> f;
cout << f << endl;
int n1 = f;
int diff = f - n1;
cout << diff <<  endl;

我想要单独的 int 中小数点前后的数字。(以 double f = 101101.11001 为例,我得到的 diff 为零,但不是数字。)我刚刚开始学习 C++。需要一些指导。

标签: c++floating-point

解决方案


OP:我想要小数点前后的数字分开int

避免int n1 = f;,因为它没有double. Anint不能在没有缩放的情况下对分数进行编码。

研究modf()将 adouble分解为整数和小数部分。

double modf(double value, double *iptr);

这些modf函数将参数值分成整数部分和小数部分,每个部分都具有与参数相同的类型和符号。它们将整数部分(以浮点格式)存储在 指向的对象中iptr

#include <cmath>

double f;
cin >> f;
cout << f << endl;
double whole;
double frac = modf(f, &whole);

cout << whole <<  endl;
cout << frac <<  endl;

如果代码仍然想采用这种int方法。读取为字符串并解析,注意 . 之后的字符数'.'。然后按该计数缩放分数,因此输入"123.00456"变为123456/100000


推荐阅读