Commit 225f398a authored by Gabriel Charette's avatar Gabriel Charette Committed by Commit Bot

[base::Time] Warn against storing floating point values

One such problematic pref at the moment is
kHintsFetcherHostsSuccessfullyFetched found while diagnosing
unexpected failures in
https://chromium-review.googlesource.com/c/chromium/src/+/1818219 which
makes microseconds-since-epoch a realistic (very large) number in
unit tests.

R=miu@chromium.org

Bug: 1004987, 1007427, 634507
Change-Id: I5ebf6a0ef46e2aea704ab5c54372ae77cbe64afb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1822840
Commit-Queue: Gabriel Charette <gab@chromium.org>
Commit-Queue: Yuri Wiitala <miu@chromium.org>
Reviewed-by: default avatarYuri Wiitala <miu@chromium.org>
Auto-Submit: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#699504}
parent 7ecb0f23
......@@ -121,6 +121,9 @@ class BASE_EXPORT TimeDelta {
constexpr TimeDelta() : delta_(0) {}
// Converts units of time to TimeDeltas.
// WARNING: Floating point arithmetic is such that FromXXXD(t.InXXXF()) may
// not precisely equal |t|. Hence, floating point values should not be used
// for storage.
static constexpr TimeDelta FromDays(int days);
static constexpr TimeDelta FromHours(int hours);
static constexpr TimeDelta FromMinutes(int minutes);
......@@ -208,6 +211,9 @@ class BASE_EXPORT TimeDelta {
// towards zero, std::trunc() behavior). The InXYZFloored() versions round to
// lesser integers (std::floor() behavior). The XYZRoundedUp() versions round
// up to greater integers (std::ceil() behavior).
// WARNING: Floating point arithmetic is such that FromXXXD(t.InXXXF()) may
// not precisely equal |t|. Hence, floating point values should not be used
// for storage.
int InDays() const;
int InDaysFloored() const;
int InHours() const;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment