From 3fd7d818b53fe80fb521fd24c024f27f38fcc7bd Mon Sep 17 00:00:00 2001 From: San Jacobs Date: Mon, 10 Nov 2025 19:47:31 +0100 Subject: Better accuracy --- main.odin | 28 +++++++++++++++------------- time.odin | 8 ++++++++ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/main.odin b/main.odin index 1cd4b7d..0d57e34 100644 --- a/main.odin +++ b/main.odin @@ -6,6 +6,7 @@ import "core:strings" import "core:strconv" import "core:sys/windows" + dayrate : f64 = 3500 Arg_Type :: enum { @@ -117,7 +118,7 @@ main :: proc() { } - total_hours : f64 = 0; + total_minutes : int = 0; fmt.println() @@ -129,7 +130,7 @@ main :: proc() { timeblocks, ok := importICS(os.args[i]) if ok { - hours : f64 = 0 + minutes : int = 0 for each_block in timeblocks { if verbose do fmt.println("Block:", timeblockToString(each_block)) pass := true @@ -153,16 +154,17 @@ main :: proc() { if verbose do if !pass_substring do fmt.println(" └ FILTERED! By Substring filter.") pass &= pass_substring } - //if verbose do fmt.printf("\n") if !pass do continue - hours += f64(hourcount(each_block)) + minutes += minutecount(each_block) } - minutes := int(f64(hours-f64(int(hours)))*60.0) + display_minutes : int = minutes%60 + display_hours : int = (minutes-display_minutes)/60 + display_hour_count : f64 = f64(minutes)/60 fmt.printf(" Hour count: %f\nHours & Minutes: %02d:%02d\n\n", - hours, int(hours), minutes) - total_hours += hours + display_hour_count, display_hours, display_minutes) + total_minutes += minutes } else { // Noffin i guess fmt.printf("\n\n") @@ -171,14 +173,14 @@ main :: proc() { fmt.printf("\nTOTAL\n\n") - total_final_hour_fraction : f64 = total_hours - f64(int(total_hours)); - - total_minutes := int(total_final_hour_fraction*60.0) + display_minutes : int = total_minutes%60 + display_hours : int = (total_minutes-display_minutes)/60 + display_hour_count : f64 = f64(total_minutes)/60 - fmt.printf(" Hour count: %f\nHours & Minutes: %02d:%02d\n", - total_hours, int(total_hours), total_minutes) + fmt.printf(" Hour count: %f\nHours & Minutes: %02d:%02d\n\n", + display_hour_count, display_hours, display_minutes) - return + os.exit(0) } diff --git a/time.odin b/time.odin index 2cdbe72..dbe79a2 100644 --- a/time.odin +++ b/time.odin @@ -769,6 +769,14 @@ hourcount :: proc(block: Timeblock) -> f32 { f32(hours) + f32(days) * 24) } +minutecount :: proc(block: Timeblock) -> int { + using block + delta: Delta = diff(end, start) + using delta + return (minutes) + + (hours*60) + + (days*24*60) +} daycount :: proc(delta: Delta) -> f32 { using delta -- cgit v1.2.1