取浮点数或整数个位,百位...上的数
来源:互联网 发布:网络摄像头直接接电脑 编辑:程序博客网 时间:2024/06/06 03:30
最近在弄这个,取N位上的数。
方法1:
将要取的数除以10的N次方,然后取小数部分乘以10取整就是第N位上的数。
代码如下
int modfdn1(double d, int digits)
{
double temp1, temp2;
temp1 = d / pow(10.0, digits); //除以10的N次方
temp1 = modf(temp1, &temp2); //取浮点数的小数部分和整数部分。返回值temp1 为小数部分,参数temp2为整数部分。
return int(temp1 * 10.0);
}
方法2:
将要取的数除以10的N次方和N-1次方,除以10的N次方的乘以10后左差。
代码如下:
int modfdn2(double d, int digits)
{
double tempdn1, tempdn2, tempd1, tempd2;
tempd1 = pow(10.0, digits - 1);
tempd2 = pow(10.0, digits);
tempd1 = d / tempd1;
tempd2 = d / tempd2;
modf(tempd1, &tempdn1);
modf(tempd2, &tempdn2);
tempdn2 *= 10.0;
return int(tempdn1 - tempdn2);
}
方法3:
将要取的数除以10的N-1次方后取整后取与10的余数即可。
int modfdn3(double d, int digits)
{
int tempint(int(d / pow(10.0, digits - 1)));
return (tempint % 10);
}
经过测试方法3性能最佳,方法1次之, 方法2最差。
从代码中也能看出来,从浮点数的计算次数就能看出来。
经过测试100000000
方法1:1392
方法2:2372
方法3:72
使用clock()获得开始和结束后取差值。
- 取浮点数或整数个位,百位...上的数
- 如何高效率从整数中地取个位上的数,十位,百位
- JAVA---一串数字取个位十位百位千位万位的数
- 如何编译一个百位数的个位和百位是不是两倍关系
- 编写函数fun,其功能是将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的十位和千位上,b数的十位和个位依次放在c数的百位和各位上
- IOS 整数取个十百位数
- 求所有个位、十位、百位的三次方加和等于这个数本身的数
- C语言 - 【随机数种子函数的使用】 和 【任意数求 百位 和 个位 的数】
- Java基础问题---计算一个整数的百位上的数,源代码
- is_binary 检测变量的类型。 二进制整数或浮点数。
- 求个位、十位、百位上的数字
- 字符串转整数或浮点数
- 字符串转为整数或浮点数
- 百位数的分解
- 求一个三位数个位,十位,百位的阶乘之和等于这个数
- C语言怎样提取一个数的十位个位百位千位
- 计算并输出一个三位数的个位,十位,百位数之和
- 求一个整数的百位数,十位数,个位数
- 使用Intent在活动之间穿梭(Intent初识)
- sqoop2 java 批量入库程序
- 第1部分(必备知识)
- 拥抱 Android Studio 之一:从 ADT 到 Android Studio
- java爬虫入门
- 取浮点数或整数个位,百位...上的数
- 邮件开发:SMTP协议详解
- CheckBox选择框
- libevent的http服务与libjson结合
- get新技能: 查询API
- 用QT获取本机IP
- 觉得比较好的资料汇集
- 大数据学习之Scala中列表(List)的使用学习(5)
- linux下定时任务crontab的使用