我有很多类型的双倍。我希望得到它的一部分。例如,
如果号码 13041004236.980835 ,我希望我的程序删除前4位数并返回 1004236.980835
在c ++中执行此操作的最短方法是什么?
谢谢!
答案 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)
将其转换为字符串,缩短并转换回来。