Skip to content

round相关函数的实现有问题 #253

@0382

Description

@0382

描述问题

用宏实现的round, floor, ceil是有问题的。floorceil里面的数字精度不够,比如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标准里面它们是会受到浮点环境而改变的。

总之手写一个符合标准的舍入函数还是很不容易的,建议还是转发到标准库的实现吧。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions