c++ - 在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
. 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"
变为123
和456/100000
推荐阅读
- javascript - 仅当字符串后跟大写字母时,如何替换字符串中的字符?
- swiftui - iPhone上的三列布局问题
- python - python - 如何获得作为Python中“创建日期”和“关闭日期”之间差异的列的平均值?
- php - 如何在codeigniter 4中使用Feature Test自动测试表单并上传文件
- python - Flask 将 POST 处理为 GET
- python - 如何从 Python 中的字母数字字符串中提取数字?
- node.js - 将工作负载添加到现有的 Visual Studio 本地缓存(布局)
- python - 在Python中绘制背景颜色的字母序列
- xml - Spring 通过 JAXB 或其他工具集成动态 XML
- xml - XML/KML - 如何在 bash 脚本中测试多边形是否“接触”另一个多边形