将正小数转化为2-9进制小数的实现方法

将任意十进制正小数分别转换成2,3,4,5,6,7,8,9进制正小数,小数点后保留8位,并输出。例如:若十进制小数为0.795,则输出:

十进制正小数 0.795000 转换成 2 进制数为: 0.11001011
 十进制正小数 0.795000 转换成 3 进制数为: 0.21011011
 十进制正小数 0.795000 转换成 4 进制数为: 0.30232011
 十进制正小数 0.795000 转换成 5 进制数为: 0.34414141
 十进制正小数 0.795000 转换成 6 进制数为: 0.44341530
 十进制正小数 0.795000 转换成 7 进制数为: 0.53645364
 十进制正小数 0.795000 转换成 8 进制数为: 0.62702436
 十进制正小数 0.795000 转换成 9 进制数为: 0.71348853
以下代码提供了这个功能。其中,dTestNo表示待转的十进制小数。iBase表示进制数。


代码如下:

#include <stdio.h>

void fun(double dTestNo, int iBase)
{
 int iT[8];  //转化后的小数保留8位数
 int iNo;

printf("十进制正小数 %f 转换成 %d 进制数为: ",dTestNo, iBase);

for(iNo=0;iNo<8;iNo++)  //分别得出每位数字  小数部分
 {
  dTestNo *= iBase;
  iT[iNo] = (int)dTestNo;  //得出整数部分存放起来
  if(dTestNo>=1) dTestNo -= iT[iNo];  //减去整数部分
 }

printf("0.");
 for(iNo=0; iNo<8; iNo++) printf("%d", iT[iNo]);
 printf("\n");
}

void main ( )

 double dTestNo= 0.795;
 int iBase;

for(iBase=2;iBase<=9;iBase++)
  fun(dTestNo,iBase);
 printf("\n");
}

(0)

相关推荐

  • 将正小数转化为2-9进制小数的实现方法

    将任意十进制正小数分别转换成2,3,4,5,6,7,8,9进制正小数,小数点后保留8位,并输出.例如:若十进制小数为0.795,则输出: 十进制正小数 0.795000 转换成 2 进制数为: 0.11001011 十进制正小数 0.795000 转换成 3 进制数为: 0.21011011 十进制正小数 0.795000 转换成 4 进制数为: 0.30232011 十进制正小数 0.795000 转换成 5 进制数为: 0.34414141 十进制正小数 0.795000 转换成 6 进制数

  • PHP实现生成唯一编号(36进制的不重复编号)

    当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号.10位的某证件号码.订单流水号.短网址等等,我们可以使用36进制计算出符合位数的不重复的编号. 我们将0-Z(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)分别代表数值0-35,如字母Z代表35.这样的话我要得到一个5位的编号,最大信息量就是36的5次方了,36^5 = 60466176,即最大的5位编号相当于10进制的数字:60466176. 本文中为了做演示,我们假定某俱乐部发放一批10位的会

  • java byte数组与16进制间相互转换的示例

    1.准备工作 import java.util.Arrays; /** * Byte[]与hex的相互转换 * @explain * @author Marydon * @creationTime 2018年6月11日下午2:29:11 * @version 1.0 * @since * @email marydon20170307@163.com */ public class ByteUtils { // 16进制字符 private static final char[] HEX_CHAR

  • 一篇教程教你学会Python进制转换(十进制转二进制、八进制、十六进制)

    一.导言 导语: 在计算机进行数据交换时,常常会有一个进制转换的过程,我们知道计算机只认0 和 1.在内存系统中,基本基于二进制进行运算的,但是有时候数据过于庞大,为了方便存储管理,计算机会使用十六进制存储数据,但是怎么实现数据转换呢? 我们人类由十根手指头,所以自然就使用十进制啦,每当我们数数字到10之后,于是就重0 开始继续数,所以逢十进一就这么来了. 对于其它进制呢,也是同样的,比如最常见的二进制,也就是逢二进一,慢慢来,依次类推,所以数学的世界是多么的奇妙呀! 今天给大家带来的是使用 P

  • Python实现将16进制字符串转化为ascii字符的方法分析

    本文实例讲述了Python实现将16进制字符串转化为ascii字符的方法.分享给大家供大家参考,具体如下: 字符串456e633064316e675f31735f66336e,通过Python,按照两个字符,例如45,6e,63形式变成ascii码格式,输出acsii码格式的字符串. 代码如下: a = "456e633064316e675f31735f66336e" ''.join([chr(int(b, 16)) for b in [a[i:i+2] for i in range(

  • C#实现将汉字转化为2位大写的16进制Unicode的方法

    本文实例讲述了C#实现将汉字转化为2位大写的16进制Unicode的方法.分享给大家供大家参考.具体实现方法如下: 说明: str.ToString("x") : 转为1位16进制小写 str.ToString("X") : 转为1位16进制大写 str.ToString("X2"):转为2位16进制大写 具体代码如下: 复制代码 代码如下: publicstaticstring StringToUnicode16(string text, st

  • 进制转换基础

    基本知识 十进制 基数为10,逢10进1.在十进制中,一共使用10个不同的数字符号,这些符号处于不同位置时,其权值各不相同. 二进制 基数为2,逢2进1.在二进制中,使用0和1两种符号. 八进制 基数为8,逢8进1.八进制使用8种不同的符号,它们与二进制的转换关系为: 0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111 十六进制 基数为16,逢16进1.十六进制使用16种不同的符号,它们与二进制的转换关系为: 0:0000 1:0001 2:0010

  • JS 实现10进制转换36进制的示例代码

    前言 我们在平时写代码的时候偶尔会碰到进制转换的问题,常见的有2进制,8进制,10进制,16进制之间的转换,但是36进制却很少听过,这里就让我们用JS来简单尝试一下36进制的实现吧 思考 36进制数的构成 在开始前,我们需要先理清楚36进制的数字组成,这样我们才能对36进制数有一个清晰的认识以及后续对数字的转化.我们都知道,16进制数是由 0-9 以及a-f 之间的字符所构成,那么36进制呢?,将 a-f 继续后推20位,显而易见,它的字母部分正好由a-z 26个英文字母构成,所以36进制数是由

  • 打印机四种进纸故障常用处理方法

    打印机4种进纸故障处理 打印机在频繁的使用过程中,常常会出现无法处理纸张的故障,大多是夹纸.不进纸.一次进多页纸以及乱走纸等现象.出现这些故障后该如何应对呢? 解决方法如下: 一.打印机夹纸极其解决方法. 1.打印纸表面是否平整.如果出现打印机夹纸的现象,首先应看打印纸表面 是否平整,如果出现纸张卷曲或褶皱现象,最好换用表面平整.光洁的纸张,并且确保打印纸表面不能有类似胶类的附着物. 2.打印纸太薄或太多.必须确保打印纸质量超过60克以上,打印纸太薄将造成打印机在走纸时变得困难,容易造成打印机夹

  • 2~62位任意进制转换方法(c++)

    进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制. 思路是原进制先转换为10进制,再转换到目标进制. 疑问: 对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最后再将负号补回来,我认为这种做法是不对的. 正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制补码(这时候就正负数就统一了),将二进制数转换为十进制后在转换为其他进制(如果有小伙伴知道如何直接将二进制转换为任意进制的方法可以留言告诉我,不胜

随机推荐