double b = a / 100000; b = (int) b; b *= 100000;
How the above C code is converted to Rust? Especially the line #2 that rounds the number.
To convert an integer to a float in Rust, use as f64 . This is a useful means to convert from various interchangeable types, you can use inline also.
A float value can be converted to an int value no larger than the input by using the math. floor() function, whereas it can also be converted to an int value which is the smallest integer greater than the input using math. ceil() function.
We can convert a string to float in Python using the float() function. This is a built-in function used to convert an object to a floating point number. Internally, the float() function calls specified object __float__() function.
Use Direct Assignment to Convert Float to Int The conversion between the float and int values can be done using the assignment operator. In this case, the float variable will be implicitly converted to the int type, and the value will be narrowed down to the second type, losing all digits after the decimal point.
Especially the line #2 that rounds the number.
First of all: this is not true. To "round" a real number is to return the nearest integer. You just convert it to int
which discards all the non-integer parts.
But here is the Rust equivalent of your exact code (assuming a
has the type f64
):
let b = a / 100_000.0; // underscore in number to increase readability let b = b as i64; let b = b * 100_000;
Which, of course, can be written in one line, too:
let b = ((a / 100_000.0) as i64) * 100_000;
If you wanted to round instead of just taking the integer part, you can use the round
method of f64
:
let b = ((a / 100_000.0).round() as i64) * 100_000;
Note that there are also trunc
, ceil
and floor
. You can use one of those methods to exactly control what happens instead of relying on the cast. From the Rust book we can learn:
Casting from a float to an integer will round the float towards zero.
This behavior is equivalent to trunc
, but if the behavior does matter to you, you should use trunc
to ...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With