【发布时间】:2026-01-04 14:30:01
【问题描述】:
我目前正在制作的程序需要我存储大量的浮点数。我将它们存储为字符串,它工作正常(当然我不得不重载一些我需要的运算符)(我不允许使用任何多精度算术库)。现在我正在寻找一种方法来获取数字的小数部分并将其存储为字符串。我考虑过使用 stringstream 并忽略,但这似乎不起作用。我的代码有问题吗,因为这没有任何作用?还是有其他方法可以实现它(我也在考虑一个循环,它会遍历流直到一个点,这行得通吗?)
string toDecimal(string x)
{
string decimalValue;
stringstream x2(x);
x2 >> x;
x2.ignore(100, '.'); //it can have up to 100 places before the dot
decimalValue = x2.str();
cout << decimalValue << end;
return decimalValue;
}
我想要实现的是:
18432184831754814758755551223184764301982441
从此:
18432184831754814758755551223184764301982441.4321432154
【问题讨论】:
-
所以你想获取从开始到第一个点的子字符串?您可以使用
std::string::find查找点,然后使用std::string::substr获取从开始到点位置的子字符串。 -
请注意,
.的左侧通常是整数部分,.的左侧是小数部分。对于其中任何一个,只需使用find和erase删除您不想要的部分。 -
@NathanOliver 听起来不太对 ;)
标签: c++ string stringstream