C++ C++;stof函数转换为整数 #包括 int main() { int val=std::stof(“4.99”)*100; std::cout

C++ C++;stof函数转换为整数 #包括 int main() { int val=std::stof(“4.99”)*100; std::cout,c++,string,casting,int,C++,String,Casting,Int,到4.99最近的IEEE754float是4.989997711181640625std::stof将返回后者 乘以100的是498.999969482421875,它被截断为498 这恐怕是浮点运算的一个陷阱;在使用不连续函数(如将float转换为int)时,需要非常小心;在特定情况下,对结果使用std::lrund) 进一步阅读:使用适当的函数将浮点数正确四舍五入: #include <iostream> int main() { int val = std::st

4.99
最近的IEEE754
float
4.989997711181640625
std::stof
将返回后者

乘以
100
的是
498.999969482421875
,它被截断为
498

这恐怕是浮点运算的一个陷阱;在使用不连续函数(如将
float
转换为
int
)时,需要非常小心;在特定情况下,对结果使用
std::lrund


进一步阅读:

使用适当的函数将浮点数正确四舍五入:

#include <iostream>

int main() 
{ 
    int val = std::stof("4.99") * 100; 

    std::cout << val; 

    return 0; 
}
#包括
#包括
int main()
{ 
自动val=std::lround(std::stof(“4.99”)*100);

std::没错。从你的评论中查到了。对盗窃罪投了赞成票。根本没有pb;)
#include <cmath>
#include <iostream>
int main() 
{ 
    auto val = std::lround(std::stof("4.99") * 100);

    std::cout << val; 

    return 0; 
}