对于正值,int(doubleValue)保证小于或等于doubleValue

Mar*_*tin 0 c++ floating-point integer type-conversion

我知道这应该避免,但不幸的是我必须在混合计算中使用整数和浮点(double).标题已经提出了一个问题:只要没有溢出,以下代码是否保证与所有c ++浮点实现一起工作(无断言),无论数值如何?

编辑:忘了提到价值总是积极的

double realSplit = seg.squareLength() / sqr(maxLength);
int split = realSplit; 
assert(realSplit-split >= 0.0); 
Run Code Online (Sandbox Code Playgroud)

Pet*_*ker 7

将浮点值转换为整数值会丢弃小数部分.对于大于或等于0的值,断言保持不变.对于小于0的值,它是另一种方式.