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

将任意十进制正小数分别转换成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");
}

时间: 2024-09-20 09:58:50

将正小数转化为2-9进制小数的实现方法_C 语言的相关文章

2011蓝桥杯【初赛试题】n进制小数

n进制小数 将任意十进制正小数分别转换成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.4434

[20131125]vim的bccalc.vim插件有关问题以及10,16进制转换的简单方法.txt

[20131125]vim的bccalc.vim插件有关问题以及10,16进制转换的简单方法.txt 链接: http://www.vim.org/scripts/script.php?script_id=219在windows下乘法,以及^运算有问题加入如下: let str = escape (str, '();&>let str = substitute (str, "\\\^", "\\\^\\\^\\\^\\\^", ""

编写C语言程序进行进制转换的问题实例_C 语言

题目     题目描述:      将M进制的数X转换为N进制的数输出.      输入:      输入的第一行包括两个整数:M和N(2<=M,N<=36).      下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出.      输出:      输出X的N进制表示的数.      样例输入:      16 10      F      样例输出:      15      提示:      输入时字母部分为大写,输出时为小写,并且有大数据.  思路

求高手 任意进制计数 求实现方法!!!!!!!!!!

问题描述 我想用36个字母代替数字,进行计数如何才能实现????????????如aaa+1=aabaaz+1=abaazz+1=baa用程序如何实现? 解决方案 解决方案二:自己解决了.解决方案三:=_=雷解决方案四: 解决方案五:引用楼主tengguo的帖子: 我想用36个字母代替数字,进行计数如何才能实现????????????如aaa+1=aabaaz+1=abaazz+1=baa用程序如何实现?

C++实现正态随机分布的方法_C 语言

高斯分布也称为正态分布(normal distribution) 常用的成熟的生成高斯分布随机数序列的方法由Marsaglia和Bray在1964年提出,C++版本如下: 复制代码 代码如下: #include <stdlib.h>#include <math.h> double gaussrand(){    static double V1, V2, S;    static int phase = 0;    double X;     if ( phase == 0 ) {

计算机体系结构(一)——进制

    在学习计算机基础时,都会提到各种进制. R进制,就是逢R进1. 我们日常生活中常用的有十进制的数字,7进制的星期,12进制的时间,24进制时间.然而在计算机中则常用二进制,也只能识别二进制.今天就简单的说一下常用的进制之间的转换.       1. R进制转换为十进制.     口诀:按权展开,依次求和.     举例:          二进制1101.11转十进制             说明:(1)权值即为该位置的大小,比如说十进制的243,2所在位的权值为10的2次方,4所在位的

SQL SERVER 16进制与10进制转换

最近工控项目中遇到的16进制与10进制转换,在.NET中比较容易实现,在SQLSERVER中发现没有直接 的转换,尤其是出现超出范围的long负数,即无符号64位整数在sqlserver中的存储.网上找的很多方法 只适用于32位整数和64位正整数,64位负数无法实现,现将使用的转换方法记录下来. 利用SQLSERVER中的varbinary来间接实现. 16进制字符串转10进制bigint(0-FFFFFFFFFFFFFFFF): 由于二进制比较容易转换为bigint 所以先将字符串转为二进制v

C# 16进制带符号的浮点数怎么转换为10进制

问题描述 下位机发来的4个字节的16进制浮点数怎么用c#转换成10进制的显示 解决方案 解决方案二:4个字节的16进制浮点数是如何存储的?不是按照浮点数存储的?如果是,那么直接用float接收就好了啊,根本就不需要转换.不管是16进制还是10进制,只要储存方法一致,字节应该是一样的啊解决方案三:floatf=BitConverter.ToSingle(bytes,0);解决方案四:引用2楼Libby1984的回复: floatf=BitConverter.ToSingle(bytes,0); 例

C# 进制转换正负数问题

问题描述 C# 进制转换正负数问题 下位机返回这一串16进制数,例如"FF E1 FF E1 FF E1 FF E0 FF F0 FF DF 00 21 00 22 00 23 00 24 00 25 00 26 00 27 00 29 00 2A" 解析的时候两个字节一组(如:FFE1),现在我转换成十进制的时候直接用的 Convert.ToInt32(,16);但转换出来的结果都是正数,我看到下位机的规格里有负数的,请问用什么类可以转换成十进制并且可以自动识别正负数的? 解决方案