| Index: cc/base/math_util.h
|
| diff --git a/cc/base/math_util.h b/cc/base/math_util.h
|
| index a83ab4fdce34be03b56fd23ffe978262abbe69fb..3a688d1ea95bae232ae3c9e1dfc383fb149c3a88 100644
|
| --- a/cc/base/math_util.h
|
| +++ b/cc/base/math_util.h
|
| @@ -97,6 +97,20 @@ class CC_EXPORT MathUtil {
|
| return (d > 0.0) ? std::floor(d + 0.5) : std::ceil(d - 0.5);
|
| }
|
|
|
| + // Rounds the given |value| to fixed precision. This makes almost equal
|
| + // floats (which differ by some threshold magnitude of floating point epsilon)
|
| + // to be considered as same.
|
| + // The |precision| should be >= 0, otherwise crashes in debug builds.
|
| + // The max number of digits that can be represented without change by float
|
| + // is 6. The maximum possible digits in the fraction part is computed by
|
| + // considering digits in integral part and digits required for |precision|.
|
| + // e.g. If intergral part has 4 digits and precision in fractional part
|
| + // requested is 5, then max allowed precision for fraction part is 2.
|
| + // Examples:
|
| + // RoundToFixedPrecision(7.33907556533813, 4) returns 7.339000225067138671875.
|
| + // RoundToFixedPrecision(7.33907508850098, 4) returns 7.339000225067138671875.
|
| + static float RoundToFixedPrecision(float value, int precision);
|
| +
|
| // Returns true if rounded up value does not overflow, false otherwise.
|
| template <typename T>
|
| static bool VerifyRoundup(T n, T mul) {
|
|
|