-
-
Notifications
You must be signed in to change notification settings - Fork 755
Open
Description
描述问题
用宏实现的round, floor, ceil是有问题的。floor和ceil里面的数字精度不够,比如tb_ceil(1e-15) == 0。而round里面的x+0.5对于0.49999999999999994在默认舍入模式下也会给出错误的结果:tb_round(0.49999999999999994) == 1。
实际上c标准规定的floor, ceil, round是不受浮点环境而改变的,用宏写的加减法是会受到浮点环境影响的。
另外tbox里面没有包含的<math.h>里面rint系列函数,c标准里面它们是会受到浮点环境而改变的。
总之手写一个符合标准的舍入函数还是很不容易的,建议还是转发到标准库的实现吧。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels