gpt4 book ai didi

c++ - to_string 函数追加零

转载 作者:行者123 更新时间:2023-11-28 06:40:27 27 4
gpt4 key购买 nike

我正在尝试获取 double 的整数部分和小数部分。这就是我实现它的方式:

void func(double d)
{
int intpart, decpart;
intpart = d;
string szDec = to_string(d);
szDec = szDec.substr(szDec.find(".") + 1);
decpart = stoi(szDec);
m_iNom = intpart * decpart + 1;
m_iDenom = decpart;
}

我传递给 func 0.5,在尝试将小数部分作为整数时出现问题。

to_String 不是得到 5,而是使 szDec = "0.500000000000000"

并且在使用 substr() 函数时,szDec = "0.500000"

给我留下 decpart = 500000 而不是 5。

如何阻止 to_String 函数和 substr 函数将零附加到字符串并将其转换为 float ?

最佳答案

要回答您的具体问题,std::to_string , 被有意定义为尽可能简单,并且没有任何可以用来更改输出格式的旋钮。对于 float ,它被定义为执行 C 的 %f 的等价物。 ,恰好产生了 "0.50000"对于 0.5 的输入.

boost::lexical_cast<std::string>(d)会给你"0.5" , std::ostringstream buf; buf << d; szDec = buf.str(); ,或等效的 C,但是,正如评论中指出的那样,如果您的数字是无法用二进制表示的数字(例如,如果它是 0.1 而不是 0.5),那么重构最佳小数部分是一个非常重要的算法。

关于c++ - to_string 函数追加零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26076155/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com