zoukankan      html  css  js  c++  java
  • 数字转换为W,K,结尾,并可指定长度(仅供参考,个人测试使用。)

    功能:

    数字转换为W,K,结尾,并可指定长度

    举例:

    输入:3141592653 
    输出:3.14159B   --5
    输出:3.14B         --2

    效率:

    请忽略,简单实现,后续优化修改算法。

    实现:C++版本

     1 #include "iostream"
     2 #include "string"
     3 #include "cstdlib"
     4 
     5 //功能:传入一数值和需保留小数点后的位数,生成指定数值。
     6 
     7 using namespace std;
     8 
     9 //格式化数字字符串  eg:%.1f格式为%.lenf
    10 string getFloatSubStrByLen(int len){
    11     char initStr[32] = "0.0";
    12     sprintf_s(initStr, 32, "%%.%df", len);
    13     return initStr;
    14 }
    15 
    16 //返回要保留指定len位的小数。
    17 string getFloatNumByLen(double nums, int len){
    18     if (len < 0){
    19         throw -1;
    20     }
    21     else{
    22         char numStr[32] = "0.0";
    23         string numSubStr = getFloatSubStrByLen(len);
    24         sprintf_s(numStr, 32, numSubStr.c_str(), nums);
    25         return numStr;
    26     }
    27 }
    28 
    29 //改变数字显示样式
    30 string getFinalStyle(double nums, int len)
    31 {
    32     if (len < 0){
    33         throw - 1;
    34     }
    35     else{
    36         string numsChar = "0.0";
    37         if (nums>1000000000)
    38         {
    39             numsChar = getFloatNumByLen(nums / 1000000000, len);
    40             numsChar += "B";
    41         }
    42         else if (nums>1000000)
    43         {
    44             numsChar = getFloatNumByLen(nums / 1000000, len);
    45             numsChar += "M";
    46         }
    47         else if (nums>10000)
    48         {
    49             numsChar = getFloatNumByLen(nums / 10000, len);
    50             numsChar += "W";
    51         }
    52         else if (nums>1000)
    53         {
    54             numsChar = getFloatNumByLen(nums / 1000, len);
    55             numsChar += "K";
    56         }
    57         return numsChar;
    58     }
    59 }
    60 
    61 //打印日志
    62 template<typename T> void printData(T data){
    63     cout << data << endl;
    64 }
    65 
    66 int main()
    67 {
    68     double nums = 3141592653;
    69     string numsChar = getFinalStyle(nums, 5);
    70     printData(numsChar.c_str());
    71 
    72     numsChar = getFinalStyle(nums, 2);
    73     printData(numsChar.c_str());
    74 
    75     system("pause");
    76     return 0;
    77 }
  • 相关阅读:
    一、区块链,这次不容错过
    二、常用固件升级
    2.监控利器nagios手把手企业级实战第一部
    四、NOSQL之Redis持久化缓存服务基础实战第三部
    三、NOSQL之Memcached缓存服务实战精讲第二部
    linux重装docker-compose后无法执行docker-compose命令
    mongodb启用auth,使用密码登录
    Vue的三个点es6知识,扩展运算符
    关于同一台服务器上两个PHP项目相互访问超时的问题
    ffmpeg生成视频封面图
  • 原文地址:https://www.cnblogs.com/cai1432452416/p/11051241.html
Copyright © 2011-2022 走看看