【C/C++】:如何获得一个float数的小数位数?
2016-05-12 21:59
405 查看
给出一个简单例子,给出a = 3.8766,如何获得a的小数位?
正确的结果应该是4
给出思路:
1,先分离出小数位
2,每次循环给小数位乘上10,如果一个数a是整数,那么就会满足
a - (int)a ==0;通过这种方式我们就能判断乘上10之后该数是不是整数了,从而获得小数位数
代码:
封装成函数
函数是可以直接用的,如果大家觉得这篇文章有用,请点个赞,谢谢大家了~~
正确的结果应该是4
给出思路:
1,先分离出小数位
2,每次循环给小数位乘上10,如果一个数a是整数,那么就会满足
a - (int)a ==0;通过这种方式我们就能判断乘上10之后该数是不是整数了,从而获得小数位数
代码:
#include <iostream> using namespace std; int main(){ float a = 3.8766; char s[10]; a = a -(int)a; for(int i=0;i<10;i++){ a *=10; if(a-(int)a==0){ cout<<i+1<<endl; //i+1就是小数位数 break; } } }
封装成函数
int xiaoshudian(float num){ num = num-(int)num; for(int i=0;i<10;i++){ num *=10; if(num-(int)num==0){ return i+1; } } }
函数是可以直接用的,如果大家觉得这篇文章有用,请点个赞,谢谢大家了~~
相关文章推荐
- C++中类和结构体的介绍
- 第7周 C语言程序设计(新2版) 练习1-17 打印长度大于80个字符的所有输入行
- C语言学习021:管道
- C++学习笔记(1) —— 有关在函数参数表后的const
- C++11新特性学习笔记(二)
- 【C++】:C++ STL中的map 详解
- 【C++】:C++中map的使用
- c++ 左值与右值
- 二分K均值c++实现
- 335. Self Crossing(C++实现)
- knn算法C++实现
- C语言之sprintf()字符串的构造
- C/C++中const关键字详解
- C++ 类的静态成员详细讲解
- 《离散数学》用C++实现第二类Stirling数的递归与(非递归)递推的方法 ,并且在实现了s(n-k)=S(n-1,k-1)+k*S(n-1,k)用递归、非递归方式之后,比教两个实验的调试速度、耗时
- 多连块(c++ 模拟法)
- C++对象内存模型
- 单循环链表(C语言实现)
- PAT (Basic Level) Practise (中文)1042. 字符统计(20)
- C++中的类与对象