没有未定义的行为,哪些浮点值无法转换为int [c]?
我刚刚从C 14标准(我的重点)中读到了这个:
这让我思考 >截断后哪个浮点值不能表示为int? (这取决于实施吗?) 解决方法
浮点数值超出int范围应该不足为奇.发明了浮点值以充分表示非常大(也非常小)的值.
> INT_MAX 1(通常等于2147483648)不能用int表示,但可以用float表示. float f; int i; ... if (static_cast<double>(INT_MIN) <= f && f < static_cast<double>(INT_MAX)) i = static_cast<int>(f); else if (f < 0) i = INT_MIN; else i = INT_MAX; 但是,这并不理想.您的系统是否具有可以表示int的最大值的double类型?如果是的话,它会起作用.另外,您想要如何舍入接近最小值或最大值int的值?如果您不想考虑这些问题,请使用boost :: numeric_cast,如here所述. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |