zoukankan      html  css  js  c++  java
  • 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.44341530  

    十进制正小数 0.795000 转换成 7 进制数为: 0.53645364  

    十进制正小数 0.795000 转换成 8 进制数为: 0.62702436  

    十进制正小数 0.795000 转换成 9 进制数为: 0.71348853

    以下代码提供了这个功能。其中,dTestNo表示待转的十进制小数。iBase表示进制数

    源代码:

     1 #include<stdio.h>
     2 #include <string.h>
     3 
     4 void fun(double dTestNo, int iBase)
     5 {
     6     int iT[8] = {0};
     7     int iNo;
     8 
     9     printf("十进制小数%lf转换为%d进制小数:", dTestNo, iBase);
    10 
    11     for(iNo = 0; iNo < 8; iNo++)
    12     {
    13         dTestNo *= iBase;
    14         //printf("%.8lf ", dTestNo);
    15         iT[iNo] = (int)dTestNo;
    16         if(dTestNo - iT[iNo] >= 0)
    17             dTestNo -= iT[iNo];
    18     }
    19 
    20     printf("0.");
    21     for(iNo = 0; iNo < 8; iNo++)
    22         printf("%d", iT[iNo]);
    23     printf("\n");
    24 }
    25 
    26 int main()
    27 {
    28     double dTestNo;
    29 
    30     scanf("%lf", &dTestNo);
    31     if(dTestNo >= 1.0)         //确保输入的是小数
    32     {
    33         dTestNo -= (int)dTestNo;
    34     }
    35 
    36     for(int iBase = 2; iBase <= 9; iBase++)
    37         fun(dTestNo, iBase);
    38 
    39     return 0;
    40 }
  • 相关阅读:
    POJ 3458 Colour Sequence(简单题)
    Cygwin下vim按方向键出现ABCD;
    算法之旅——归并排序
    poj 2769 Reduced ID Numbers(memset使用技巧)
    Restlet+Fastjson 高速构建轻量级 Java RESTful Webservice
    poj 1659 Frogs&#39; Neighborhood (度序列)
    PHP监測memcache服务端的执行状况
    机器学习之倚门回首嗅青梅
    Threejs 官网
    sqlserver安全加固
  • 原文地址:https://www.cnblogs.com/Dreamcaihao/p/3055235.html
Copyright © 2011-2022 走看看