十进制转换为N进制问题
来源:互联网 发布:知乎答案加载不出来 编辑:程序博客网 时间:2024/05/16 12:04
问题描述:给定十进制数(非负的实数)的字符串表示与转换的进制,转换的精度,要求输出转换后的进制数的字符表示
代码:
char unsignedToChar(unsigned n){ char ch = '#'; if (0 <= n && n <= 9) ch = '0' + n; else if (10 <= n && n <= 36) ch = n - 10 + 'A'; return ch;}unsigned charToUnsigned(char ch){ unsigned n = 0; if ('0' <= ch && ch <= '9') n = ch - '0'; else if ('A' <= ch && ch <= 'Z') n = ch - 'A' + 10; return n;}std::string decimalTo(const std::string &decimal, unsigned digit, unsigned accuracy) { unsigned accuracyCopy = accuracy; std::stringstream strToDecimal(decimal); std::stack<char> bInt; std::string decNumStr; unsigned integer; double decNum, decimalPlace; const unsigned digitNum = digit; /* 字符串流将十进制字符串表示转换为double类型 */ strToDecimal >> decNum; /* 获取十进制数的整数与小数部分 */ integer = static_cast<unsigned>(decNum / 1); decimalPlace = decNum - integer; /* 十进制整数部分转换为二进制 */ while (integer) { bInt.push(unsignedToChar(integer % digitNum)); integer /= digitNum; } while (!bInt.empty()) { decNumStr.push_back(bInt.top()); bInt.pop(); } /* 十进制小数部分转换为二进制 */ if (accuracyCopy != 0) decNumStr.push_back('.'); while (decimalPlace && accuracyCopy != 0) { --accuracyCopy; decimalPlace *= digitNum; decNumStr.push_back(unsignedToChar(static_cast<char>(decimalPlace / 1))); decimalPlace -= static_cast<int>(decimalPlace) / 1; } while (accuracyCopy != 0) { --accuracyCopy; decNumStr.push_back(unsignedToChar(0)); } return decNumStr;}</span>
0 0
- 十进制转换为N进制问题
- n进制转换为十进制
- n进制转换为十进制
- n进制转换为十进制
- 十进制转换为N进制
- 进制转换(十进制转n进制)
- 十进制到n进制的转换
- 将十进制数N转换为r进制的数
- 十进制数转换为N进制数
- N进制数转换为十进制数
- 十进制转换为任意进制
- 将16进制转换为十进制
- 十进制转换为其他进制
- 任意进制转换为十进制
- 十进制转换为其他进制
- C++十进制转换为任意进制
- 十进制转换为任何进制
- 十进制转换为其它进制
- [C++]LeetCode: 57 Excel Sheet Column Title
- TFS错误-TF249053
- spring定时任务
- 更新DataGridView数据源导致WinForm主程序无响应
- 为什么毕业后五年,你们的贫富差距越拉越大
- 十进制转换为N进制问题
- 关于CLOSE BY CLIENT STACK TRACE
- 自动布局框架介绍
- NGUI系列教程五(角色信息跟随)
- 掀开C#的一层面纱
- 多线程 -- 等待函数、事件内核对象
- 二叉树的层次遍历
- CentOS上使用OpenStack的一些问题
- POJ 1241