this post was submitted on 05 Aug 2023
530 points (92.3% liked)

Programmer Humor

19551 readers
337 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] maniacal_gaff@lemmy.world 31 points 1 year ago (2 children)

It would be kinda dumb to force everyone to keep casting back to a double, no? If the output were positive, should it have returned an unsigned integer as well?

[–] larvyde@sh.itjust.works 15 points 1 year ago (1 children)

int coerces to double automatically, without explicit casting

[–] snake_baitman@lemmy.sdf.org 18 points 1 year ago (1 children)

The CPU has to do real work to convert between float and int types. Returning an int type would just be giving the CPU extra work to do for no reason

[–] notnotmike@programming.dev 3 points 1 year ago

I'm learning so much from this thread and I don't even use Java

[–] baseless_discourse@mander.xyz 2 points 1 year ago (1 children)

I think one of the main reason to use floor/ceilling is to predictably cast a double into int. This type signature kind of defeats this important purpose.

I don't know this historical context of java, but possibly at that time, people see type more of a burden than a way to garentee correctness? (which is kind of still the case for many programmers, unfortunately.

[–] BorgDrone@lemmy.one 14 points 1 year ago* (last edited 1 year ago) (1 children)

You wouldn’t need floor/ceil for that. Casting a double to an int is already predictable as the java language spec explicitly says how to do it, so any JVM will do this the exact same way.

The floor/ceil functions are simply primitive math operations and they are meant to be used when doing floating point math.

All math functions return the same type as their input parameters, which makes sense. The only exception are those that are explicitly meant for converting between types.

[–] baseless_discourse@mander.xyz 2 points 1 year ago* (last edited 1 year ago) (1 children)

"predictable" in the sense that people know how it works regardless what language they know.

I guess I mean "no surprise for the reader", which is more "readability" than "predictability"

[–] BorgDrone@lemmy.one 3 points 1 year ago (1 children)

Is there any language that doesn’t just truncate when casting from a float to an int?

[–] baseless_discourse@mander.xyz 4 points 1 year ago* (last edited 1 year ago)

As far as I know, haskell do not allow coresion of float to int without specifying a method (floor, ceil, round, etc): https://hoogle.haskell.org/?hoogle=Float+-%3E+Integer&scope=set%3Astackage

Agda seems to do the same: https://agda.github.io/agda-stdlib/Data.Float.Base.html