我有将代码转换为二进制的代码,但无法弄清楚如何使其适用于固定点十进制数。例如,我如何转换5.25
?
以下是我现在的代码:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> intVector;
int number, digit ;
int base ;
cout << "Enter a base: ";
cin >> base;
cout << "Enter a number: ";
cin >> number;
while(number > 0)
{
digit = number % base ;
intVector.push_back(digit) ;
number = number / base ;
}
while(!intVector.empty())
{
cout<<intVector.back() ;
intVector.pop_back();
}
return 0;
}
任何指针如何转换固定的十进制数?我需要它打印最多20个小数位。
答案 0 :(得分:0)
您可以reinterpret_cast
将您的浮点数地址设置为char*
,然后逐个手动检查这些位,例如:
double number = 16.4566565776765;
char* fp = reinterpret_cast<char*>(&number);
for (std::size_t i = 0; i < sizeof(float); i++){
for (std::size_t j = 0; j < CHAR_BIT; j++){
intVector.push_back(fp[i] & (1<<j) ? 1 : 0);
}
}
注意:强>