我知道应该避免这种情况,但不幸的是我必须在混合计算中使用整数和浮点数(double)。标题已经说明了这个问题: 只要没有溢出,以下代码是否可以保证与所有c ++浮点实现一起工作(无断言),无论数值是多少?
编辑:忘记提及值始终为正
double realSplit = seg.squareLength() / sqr(maxLength);
int split = realSplit;
assert(realSplit-split >= 0.0);
答案 0 :(得分:7)
将浮点值转换为整数值会丢弃小数部分。对于大于或等于0的值,断言保持不变。对于小于0的值,它会采用另一种方式。