获得一部分数字

时间:2014-04-03 13:12:50

标签: c++ numbers

我有很多类型的双倍。我希望得到它的一部分。例如,

如果号码 13041004236.980835 ,我希望我的程序删除前4位数并返回 1004236.980835

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

谢谢!

3 个答案:

答案 0 :(得分:5)

#include <string>
#include <sstream>

std::stringstream ss;
ss << number;
std::string str = ss.str();

str.erase( 0, 4 );

答案 1 :(得分:3)

以下是如何用数学做的:

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

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

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

不要失去精确度(假设你正在使用双倍)。

答案 2 :(得分:0)

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