to 27楼:
你不是对7楼表达式的正确性表示怀疑嘛, 我23楼写的就是对7楼表达式的解释
7楼表达式可以分解成
result=60-(x*20+y-1)/(2*y)=60-x*20/(2*y)-(y-1)/(2*y)
其中x*20/(2*y)这项可以表示为a+b/(2*y), 这里的a是结果的整数部分, b是余数
所以上面的表达式可以改写为:
result=60-a-b/(2*y)-(y-1)/(2*y)=60-a-(b+y-1)/(2*y)
最终的结果就是
result=60-a, 当b<=y时, 也就是x*10/y的小数部分<=0.5时, 结果舍入
result=60-a-1, 当b>y时, 也就是x*10/y的小数部分>0.5时, 结果舍去
当然要保证结果的正确性, 中间计算时需要保证不会发生溢出 |