鱼C论坛

 找回密码
 立即注册
查看: 1987|回复: 6

c++如何显示任意一数字的位数

[复制链接]
发表于 2014-12-4 12:18:52 | 显示全部楼层 |阅读模式
20鱼币
c++新手求帮助,c++如何显示任意一数字的位数,像14876.456会显示5位数和3位小数,正负数都可以显示

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-4 13:12:45 | 显示全部楼层
笨方法就是把这个浮点数转到字符串,然后判断小数点前面有多少字符和后面有多少字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-4 15:27:56 | 显示全部楼层
先除以1得到整数部分.再用原来的数减去整数部分得到小数部分.两个部分分别以10为底取对数.
例如14876.456
除以1得到14876.原来减掉整数部分得到的小数部分0.456
然后取对数.整数部分的位数为log10(14876)+1=5位(用整型变量存放)
小数部分为fabs(log10(0.456))=|-3|=3位

点评

我很赞同!: 0.0
我很赞同!: 0
  发表于 2014-12-4 17:36
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-12-6 13:25:44 | 显示全部楼层
Xin950320 发表于 2014-12-4 15:27
先除以1得到整数部分.再用原来的数减去整数部分得到小数部分.两个部分分别以10为底取对数.
例如14876.456
...

小数部分好像有点问题额,|log10(0456)|=0.341
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-7 10:26:43 | 显示全部楼层
Xin950320 发表于 2014-12-4 15:27
先除以1得到整数部分.再用原来的数减去整数部分得到小数部分.两个部分分别以10为底取对数.
例如14876.456
...

谢谢分享。很赞同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-14 15:56:48 | 显示全部楼层
#include<iostream.h>
void main()
{
        int n,i=0;
        cout<<"请输入数"<<endl;
        cin>>n;
        while(n!=0)
        {
                n/=10;
                i++;
        }
        cout<<"该数为"<<i<<"位"<<endl;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 13:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表