我有一个浮点变量,每一步递增 0.1。我想将其转换为 16 位固定值,其中有 5 位小数部分。为了做到这一点,我有下面的代码片段:
#include <iostream>
#include <bitset>
#include <string>
using namespace std;
int main() {
bitset<16> mybits;
string mystring;
float x = 1051.0;
for (int i = 0; i < 20; i++)
{
mybits = bitset<16>(x*32);
mystring = mybits.to_string<char, string::traits_type, string::allocator_type>();
cout << x << "\t" << "mystring: " << mystring << '\n';
x += 0.1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然而,结果是这样的:
1051 mystring: 1000001101100000
1051.1 mystring: 1000001101100011
1051.2 mystring: 1000001101100110
1051.3 mystring: 1000001101101001
1051.4 mystring: 1000001101101100
1051.5 …Run Code Online (Sandbox Code Playgroud) 我心里有个疑问。假设我有两个向量,称为向量 1 和向量 2。
vector <int> vector1{1,2};
vector <int> vector2{3,4};
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个名为 vector_2d 的二维向量,并使用 push_back 函数将这两个向量分配到我的新二维向量中。
vector <vector <int>> vector_2d;
vector_2d.push_back(vector1);
vector_2d.push_back(vector2);
Run Code Online (Sandbox Code Playgroud)
C++ 如何决定将 vector2 分配给 vector_2d 的第二行?为什么它没有将这两个向量背靠背添加?
我还尝试将 vector1 多次添加到名为 new_vector 的新二维向量中。但它似乎只添加 vector1 一次。为什么会这样?为什么它没有将多个 vector1 添加到新行或背靠背?
vector <vector <int>> new_vector;
new_vector.push_back(vector1);
new_vector.push_back(vector1);
new_vector.push_back(vector1);
new_vector.push_back(vector1);
Run Code Online (Sandbox Code Playgroud)