转换基数 11 到十进制
Conversion base 11 to decimal
我知道unsigned long
最多只能4294967295,所以这是我的问题,当用户输入许多数字(例如结果将超过限制)时,转换后的数字将只是4294967295。例:
Base 11: 1928374192847
Decimal: 4294967295
结果应该是5777758712535.如何修复这个限制? VB6.0 需要我们。这是我的代码:
cout << "tt CONVERSIONn";
cout << "t Base 11 to Decimaln";
cout << "nBase 11: ";
cin >> str;
const auto x = str.find_first_not_of("0123456789aA");
if (x != string::npos)
{
std::cout << "Invalid Inputnn";
goto a;
}
unsigned long x = strtoul(str.c_str(), NULL, 11);
cout << "Decimal: " << x << "nn";
如果结果超过 4294967295,程序应显示"超出范围"。对不起,我只是一个初学者。
来自 www.cplusplus.com 上的 strtoul 文档:
如果读取的值超出了无符号长整型的可表示值范围,则该函数返回 ULONG_MAX(在
中定义),并且 errno 设置为 ERANGE。
您应该检查 errno 以确定该值是否超出范围。
相关文章:
- C++:二进制到十进制w/转换过程的外观
- 十六进制到十进制转换的未清理答案
- 如何在C++中将二进制编码十进制转换为 int
- 以正确的顺序从十进制转换为二进制
- Arduino 十六进制到十进制转换
- 使用指数将十进制转换为二进制
- 从十进制转换为 BCD
- 使用堆栈将字符串格式的十进制转换为双精度
- 混乱将十进制转换为C 中的十六进制
- 使用位操作员将十进制转换为八十位
- 将长 64 位十进制转换为二进制
- 将十进制转换为十六进制,找不到我的逻辑错误
- 试图制作一个将十进制转换为二进制和ASCII C++的表
- 将字符串中的十进制转换为二进制时出错
- 用正确的位大小在c++中将十进制转换为二进制
- 在编译时将十进制转换为十六进制
- 为什么将十进制转换为二进制的递归方法比迭代、使用和返回字符串更快
- 将十进制转换为 32 位二进制
- 以最佳方式将十进制转换为二进制
- 使用分而治之的二进制到十进制转换