获取数字的一部分

Getting a part of number

本文关键字:一部分 数字 获取      更新时间:2023-10-16

我有许多双精度类型。我想参与其中。例如

如果数字是 13041004236.980835

我希望我的程序删除前 4 位数字并返回 1004236.980835

在 c++ 中执行此操作的最短方法是什么?

谢谢!

#include <string>
#include <sstream>
std::stringstream ss;
ss << number;
std::string str = ss.str();
str.erase( 0, 4 );

以下是使用数学的方法:

auto digits = floor(log10(number)) + 1;
number = fmod(number, pow(10, digits - 4));

您也可以使用其他答案中的字符串流方法,但您需要使用

ss << std::fixed << std::setprecision(std::numeric_limits<double>::digits10);

为了不丢失精度(假设您使用的是双精度)。

将其转换为字符串,缩短并转换回来。