小编efe*_*373的帖子

C++中如何减少浮点数转换为定点数时的舍入误差?

我有一个浮点变量,每一步递增 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)

c++ ieee-754 bitset

2
推荐指数
1
解决办法
969
查看次数

.push_back 如何在 C++ 中工作?

我心里有个疑问。假设我有两个向量,称为向量 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)

c++ vector push-back

0
推荐指数
1
解决办法
101
查看次数

标签 统计

c++ ×2

bitset ×1

ieee-754 ×1

push-back ×1

vector ×1