如何把 十进制实数 转换为 任一进制数 ?

rfit 2000-04-24 07:04:00
用 itoa() 函数可以把整数转换为 n ( 0<= n <=36 )进制数,

我想转换小数为某一进制n, 怎么办?

例如: 将 31.56 转换为5进制数
谢谢
...全文
194 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunsetyang 2000-04-24
  • 打赏
  • 举报
回复
N为小数部分的长度:
x=整数部分
do{
保存x%n;(最先得到的最低位)
x=x/n;
}while(x>0);
m=小数部分;
count=0;
do{
m=m*n;
x=(int)m;
保存x;(最先得到的小数部分的最高位)
m=m-x;
}while(count++<N);
如31.56转化为5进制数为:111.24
raining 2000-04-24
  • 打赏
  • 举报
回复
和10进制转2进制差不多,分为整数部分和分数部分。
n=0和n=1显然无意义,问题可以转为2<= n <= 36

整数部分,采用对n求余的办法就可以得到;
分数部分则用乘法,每次得到的整数部分为该数位的数字。
在10进制下的有限小数,在其他进位制下可能是无限小数。

31.56(10)=111.24(5)

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧