如何解决在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 ++。需要一些指导。
解决方法
OP:我希望小数点前后的数字分别位于
int
中。
避免使用int n1 = f;
,因为它没有double
的范围。 int
不能在不缩放的情况下对分数进行编码。
研究modf()
,将double
分为整数和小数部分。
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"
变为123
和456/100000
固定为十进制数据类型以获取运算结果,可以使用浮点数或双精度数,没关系。上面代码中的错误是您使用int diff作为结果,请记住,int数据类型会将所有内容本身都转换为整数,而您希望将其转换为十进制。
double f;
cin >> f;
int n1 = f;
double diff = f - n1;
float diff2 = f - n1;
cout << "Using double : " << diff << endl
<< "Using float : " << diff2 << endl;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。