Skip to content

Document precision considerations of Duration-float methods#155133

Merged
rust-bors[bot] merged 1 commit intorust-lang:mainfrom
cuviper:duration_fp_docs
Apr 22, 2026
Merged

Document precision considerations of Duration-float methods#155133
rust-bors[bot] merged 1 commit intorust-lang:mainfrom
cuviper:duration_fp_docs

Conversation

@cuviper
Copy link
Copy Markdown
Member

@cuviper cuviper commented Apr 10, 2026

A Duration is essentially a 94-bit value (64-bit sec and ~30-bit ns),
so there's some inherent loss when converting to floating-point for
mul_f64 and div_f64. We could go to greater lengths to compute these
with more accuracy, like #150933 or #154107,
but it's not clear that it's worth the effort. The least we can do is
document that some rounding is to be expected, which this commit does
with simple examples that only multiply or divide by 1.0.

This also changes the f32 methods to just forward to f64, so we keep
more of that duration precision, as the range is otherwise much more
limited there.

A `Duration` is essentially a 94-bit value (64-bit sec and ~30-bit ns),
so there's some inherent loss when converting to floating-point for
`mul_f64` and `div_f64`. We could go to greater lengths to compute these
with more accuracy, like rust-lang#150933 or rust-lang#154107,
but it's not clear that it's worth the effort. The least we can do is
document that some rounding is to be expected, which this commit does
with simple examples that only multiply or divide by `1.0`.

This also changes the `f32` methods to just forward to `f64`, so we keep
more of that duration precision, as the range is otherwise much more
limited there.
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Apr 10, 2026
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Apr 10, 2026

r? @scottmcm

rustbot has assigned @scottmcm.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: @scottmcm, libs
  • @scottmcm, libs expanded to 8 candidates
  • Random selection from Mark-Simulacrum, scottmcm

@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Apr 10, 2026

⚠️ Warning ⚠️

  • There are issue links (such as #123) in the commit messages of the following commits.
    Please move them to the PR description, to avoid spamming the issues with references to the commit, and so this bot can automatically canonicalize them to avoid issues with subtree.

@joshtriplett
Copy link
Copy Markdown
Member

This looks good to me.

@scottmcm scottmcm assigned joshtriplett and unassigned scottmcm Apr 18, 2026
@the8472
Copy link
Copy Markdown
Member

the8472 commented Apr 22, 2026

Ok, no new API guarantees, it's just a note informing users about limited precision/lossiness. This was also previously discussed in an api-meeting which was generally on board with the idea of just clarifying instead of wasting performance on slightly improving precision.

LGTM

@bors r+

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented Apr 22, 2026

📌 Commit 20c9f54 has been approved by the8472

It is now in the queue for this repository.

@rust-bors rust-bors Bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 22, 2026
rust-bors Bot pushed a commit that referenced this pull request Apr 22, 2026
…uwer

Rollup of 10 pull requests

Successful merges:

 - #154794 (Add on_unmatch_args)
 - #155133 (Document precision considerations of `Duration`-float methods)
 - #154283 (Remove `nodes_in_current_session` field and related assertions)
 - #155374 (rustdoc: fix a few spots where emit isn't respected)
 - #155587 (Immediately feed visibility on DefId creation)
 - #155622 (c-variadic: `va_arg` fixes )
 - #155629 (rustc_public: Add `constness` & `asyncness` in `FnDef`)
 - #155632 (Some metadata cleanups)
 - #155639 (BinOpAssign always returns unit)
 - #155647 (rustc-dev-guide subtree update)
@rust-bors rust-bors Bot merged commit d7bb378 into rust-lang:main Apr 22, 2026
11 checks passed
@rustbot rustbot added this to the 1.97.0 milestone Apr 22, 2026
rust-timer added a commit that referenced this pull request Apr 22, 2026
Rollup merge of #155133 - cuviper:duration_fp_docs, r=the8472

Document precision considerations of `Duration`-float methods

A `Duration` is essentially a 94-bit value (64-bit sec and ~30-bit ns),
so there's some inherent loss when converting to floating-point for
`mul_f64` and `div_f64`. We could go to greater lengths to compute these
with more accuracy, like #150933 or #154107,
but it's not clear that it's worth the effort. The least we can do is
document that some rounding is to be expected, which this commit does
with simple examples that only multiply or divide by `1.0`.

This also changes the `f32` methods to just forward to `f64`, so we keep
more of that duration precision, as the range is otherwise much more
limited there.
github-actions Bot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Apr 24, 2026
…uwer

Rollup of 10 pull requests

Successful merges:

 - rust-lang/rust#154794 (Add on_unmatch_args)
 - rust-lang/rust#155133 (Document precision considerations of `Duration`-float methods)
 - rust-lang/rust#154283 (Remove `nodes_in_current_session` field and related assertions)
 - rust-lang/rust#155374 (rustdoc: fix a few spots where emit isn't respected)
 - rust-lang/rust#155587 (Immediately feed visibility on DefId creation)
 - rust-lang/rust#155622 (c-variadic: `va_arg` fixes )
 - rust-lang/rust#155629 (rustc_public: Add `constness` & `asyncness` in `FnDef`)
 - rust-lang/rust#155632 (Some metadata cleanups)
 - rust-lang/rust#155639 (BinOpAssign always returns unit)
 - rust-lang/rust#155647 (rustc-dev-guide subtree update)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs Relevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants