init
This commit is contained in:
commit
0630db6298
|
|
@ -0,0 +1 @@
|
||||||
|
/target
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "asdf"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"split_one",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "split_one"
|
||||||
|
version = "1.0.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2198b215a5ce931043797f707249b3142fe544aca13cfbdf92bdaecccd7f214c"
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
[package]
|
||||||
|
name = "asdf"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
split_one = "1.0.2"
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
use std::time::{SystemTime, UNIX_EPOCH};
|
||||||
|
|
||||||
|
const NANOS_PER_SEC: u32 = 1_000_000_000;
|
||||||
|
fn manual_duration_as_secs_f32(secs: u64, nanos: u128) -> f32 {
|
||||||
|
let secs_as_f32 = secs as f32;
|
||||||
|
println!("secs_as_f32: {secs_as_f32:.10}");
|
||||||
|
let nanos_as_f32 = nanos as f32;
|
||||||
|
println!("nanos_as_f32: {nanos_as_f32:.10}");
|
||||||
|
let nanos_per_sec_as_f32 = NANOS_PER_SEC as f32;
|
||||||
|
println!("nanos_per_sec_as_f32: {nanos_per_sec_as_f32:.10}");
|
||||||
|
let nanos_in_seconds = nanos_as_f32 / nanos_per_sec_as_f32;
|
||||||
|
println!("nanos_in_seconds: {nanos_in_seconds:.10}");
|
||||||
|
let result = secs_as_f32 + nanos_in_seconds;
|
||||||
|
println!("result: {result:.10}");
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
|
fn manual_duration_as_secs_f32_late_cast(secs: u64, nanos: u128) -> f32 {
|
||||||
|
let nanos_in_seconds = nanos / (NANOS_PER_SEC as u128);
|
||||||
|
println!("nanos_in_seconds: {nanos_in_seconds:.10}");
|
||||||
|
let result = (secs as u128) + nanos_in_seconds;
|
||||||
|
println!("result: {result:.10}");
|
||||||
|
result as f32
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let original = 1713441059 as u128;
|
||||||
|
let original_as_f32 = 1713441059 as f32;
|
||||||
|
println!("original: {original}");
|
||||||
|
println!("original_as_f32: {original_as_f32}");
|
||||||
|
println!("original_as_f32 < f32::MAX: {}", original_as_f32 < f32::MAX);
|
||||||
|
println!(
|
||||||
|
"original_as_f32 as u128 == original: {}",
|
||||||
|
original_as_f32 as u128 == original
|
||||||
|
);
|
||||||
|
|
||||||
|
let now = SystemTime::now();
|
||||||
|
println!("SystemTime::now(): {now:?}");
|
||||||
|
let now = now.duration_since(UNIX_EPOCH).unwrap();
|
||||||
|
println!("now.duration_since(): {now:?}");
|
||||||
|
let secs = now.as_secs();
|
||||||
|
let nanos = now.as_nanos() - ((secs * (NANOS_PER_SEC as u64)) as u128);
|
||||||
|
println!("now.duration_since() internal: Secs: {secs}, Nanos: {nanos}");
|
||||||
|
let now_f32 = now.as_secs_f32();
|
||||||
|
println!("as secs f32: {now_f32:.0}");
|
||||||
|
let now_f64 = now.as_secs_f64();
|
||||||
|
println!("as secs f64: {now_f64:.0}");
|
||||||
|
println!("secs: {secs:.10}");
|
||||||
|
println!("nanos: {nanos:.10}");
|
||||||
|
println!("NANOS_PER_SEC: {NANOS_PER_SEC:.10}");
|
||||||
|
let manual_f32 = manual_duration_as_secs_f32(secs, nanos);
|
||||||
|
println!("manual as secs f32: {manual_f32:.0}");
|
||||||
|
let manual_f32_late_cast = manual_duration_as_secs_f32_late_cast(secs, nanos);
|
||||||
|
println!("manual as secs f32 (late cast): {manual_f32_late_cast:.0}");
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue