block_num = (n +split-1)/split;
block_num = ( 0 == n )? 0: (n -1)/split+1;
@#20 “信息与计算科学”的 好像很计算机的样子 其实就是数学系的 ,专业名以前叫 “计算数学”
我#7楼讲的ceil floor就是数学上的概念 而你的问题本质就是ceil floor到ceil 就是+1 - eps eps是一个足够小的数 当然你这里split为底 最小精度 (float)1/split 就够用了而已 ceil = (float)n/split + 1 - (float)1/split 再化简 使能直接使用整数相除 就是 ceil=(n-1)/split+1 这个才是本质 (n + split-1)/split 这个才是变形 例 n + split-1 >int_max && n<int_max 时 “(n + split-1)/split”就溢出了 而“(n-1)/split+1”没有溢出
block_num=(n-1)/split+1 最后一块可能比前面的小
ceil、floor
[quote=引用 4 楼 aa2650 的回复:] [quote=引用 2 楼 edwardvsnc 的回复:] block_num = (n + split - 1)/split;
remain = n % block_size; block_num = (n-remain) / block_size;
64,654
社区成员
250,484
社区内容
加载中
试试用AI创作助手写篇文章吧