将浮子施法到int不一致 使用C++,我尝试使用这些指令将浮点< /COD>值转换成 int : #include <iostream> int main() { float NbrToCast = 1.8f; int TmpNbr = NbrToCast * 10; std::cout << TmpNbr << "\n"; } #包括 int main(){ 浮动NbrToCast=1.8f; int TmpNbr=NbrToCast*10; 正如Yuushi在评论中所说,我想每个编译器的舍入规则可能不同。在这样一个主题上有一个可移植的解决方案可能意味着你需要编写自己的舍入方法
因此,在您的情况下,您可能需要检查7后面数字的值,并增加值或不增加值。例如:将浮子施法到int不一致 使用C++,我尝试使用这些指令将浮点< /COD>值转换成 int : #include <iostream> int main() { float NbrToCast = 1.8f; int TmpNbr = NbrToCast * 10; std::cout << TmpNbr << "\n"; } #包括 int main(){ 浮动NbrToCast=1.8f; int TmpNbr=NbrToCast*10; 正如Yuushi在评论中所说,我想每个编译器的舍入规则可能不同。在这样一个主题上有一个可移植的解决方案可能意味着你需要编写自己的舍入方法,c++,casting,floating-point,C++,Casting,Floating Point,因此,在您的情况下,您可能需要检查7后面数字的值,并增加值或不增加值。例如: int main() { float NbrToCast = 1.8f; float TmpNbr = NbrToCast * 10; std::cout << RoundingFloatToInt(TmpNbr) << "\n"; } int RoundingFloatToInt(const float &val) { float intPart, fra
int main() {
float NbrToCast = 1.8f;
float TmpNbr = NbrToCast * 10;
std::cout << RoundingFloatToInt(TmpNbr) << "\n";
}
int RoundingFloatToInt(const float &val)
{
float intPart, fractPart;
fractpart = modf (val, &intpart);
int result = intPart;
if (fractpart > 0.5)
{
result++;
}
return result;
}
intmain(){
浮动NbrToCast=1.8f;
浮动TmpNbr=NbrToCast*10;
std::cout see尝试将最后一行更改为std::cout@RichardCritten:TmpNbr
是int
,那么std::precision(20)
的意义是什么?有许多IEEE-754;可能每个编译器使用的默认值不同。尝试设置舍入模式()看看会发生什么?@Yuushi比取整模式的差异更有可能是FLT\u EVAL\u方法的值差异。