Float precision in Python [duplicate] - python

This question already has answers here:
How to round to 2 decimals with Python? [duplicate]
(21 answers)
Closed 2 months ago.
I have a float,
5.8307200000000005e-06
But I only want the precision of 5 on it, so it looks like this
5.83072e-06
How can I do this in Python?
Update, new code
def precision(number):
# The number you want to change the precision of
number
# Convert the number to scientific notation
sci_notation = '{:.5e}'.format(number)
# Split the scientific notation string into its coefficient and
exponent parts
coefficient, exponent = sci_notation.split('e')
# Round the coefficient to 5 decimal places
rounded_coefficient = round(float(coefficient), 5)
# Rebuild the scientific notation string using the rounded
coefficient and the original exponent
rounded_sci_notation = f'{rounded_coefficient}e{exponent}'
# Convert the scientific notation string back to a float
rounded_number = float(rounded_sci_notation)
return rounded_number

Here is how you format a number with 5 significant digits and scientific notation:
number = 5.8307200000000005e-06
print(f"{number:.5e}")
>>> 5.83072e-06
But this does nothing with the precision of the number, just the way it is printed.....

Related

Integer equivalence of binary number that is represented as an integer in Python [duplicate]

This question already has answers here:
Convert base-2 binary number string to int
(10 answers)
Closed 5 months ago.
I have an input a=int(1010). I want to find integer equivalence of binary 1010. If I use bin(a) then output will be 1111110010, but I want to get 10.
You need to tell python, that your integer input is in binary. You can either parse a string with a defined base, or ad a 0b-prefix to your code constants.
a = int("1010", base=2)
a = 0b1010
print(a) # result: 10
print(bin(a)) # result: 1010

a basic eight number string to eight bit binary number [duplicate]

This question already has answers here:
Convert base-2 binary number string to int
(10 answers)
Python int to binary string?
(36 answers)
Closed 1 year ago.
eight character (zero and one) string -> turn it into 8 bit binary number -> perform binary operation -> turn back into 8 0/1 string
>>> the_entry = "00000000"
>>> the_binary number = 8CharacterStringIntoThe8CharacterBinaryNumber(the_entry)
>>> the_binary_number << 1 # any binary operation
>>> the_result_string = EightCharacterBinaryNumberIntoEightCharacterString(the_binary_number)
this is soo simple, I refuse to write my own method, but obviously, in th 180000 possible results, I cannot find the one related to my question.
Do you hold the magic??
These are simple basic operations:
entry = "00000000"
number = int(entry, 2)
result = f"{number:08b}"

how to print a float to 2 decimal places [duplicate]

This question already has answers here:
How to display a float with two decimal places?
(13 answers)
Closed 3 years ago.
I want number from input to print out with 2 decimal places. You can assume that the number will always be a float.
num = 20.0
Desired output - 20.00.
I've tried this code:
num = round(num, 2)
num = float('{0.2f}'.format(num))
print(num)
This should work
print('{0.2f}'.format(num))
When you turn this string back into a float with float() the formatting is lost.
No matter what you do to the float value, as long as it is still a float, it does not have any internal concept of decimal places.
If you want to display two decimal places, then that happens when you convert to text - which everything you print is, whether you asked for the conversion or not. You cannot make num "be" 20.00 as opposed to 20.0, because those aren't actually different things. (And keep in mind that the float simply cannot represent all decimal values exactly.)
Therefore, we use string formatting in the print call:
num = 20.0
print('{.2f}'.format(num))
# Or, using f-strings:
print(f'{num:.2f}')

Add two Float values and get up to 2 precision values [duplicate]

This question already has answers here:
How to print float to n decimal places including trailing 0s?
(5 answers)
Closed 5 years ago.
Can we get up to 2 precision values when we add 2 float values of containing 0 as 2nd precision without changing its type as Float
I have a snippet like
a = 1.20+1.20
print a
the output should be like
2.40
but I got the output as 2.4 because python rounds off
I've tried like this ,
from decimal import *
getcontext().prec = 3
Decimal(1.20)+Decimal(1.20)
Decimal('2.40')
But every time I need to change the precision value!
can we get as 2.40 without changing its type?
It should contain a float value as 2.40, not a string!
Yes! you can round a float number.
>>> round(2.675, 2)
2.67
You can see more details in python's documentation

When Rounding to nearest hundreds, how do I include 0s [duplicate]

This question already has answers here:
Rounding a number in Python but keeping ending zeros
(6 answers)
Closed 6 years ago.
So let's say I have this code:
num = 1.29283
round(num, 2)
That rounds to 1.29, but if I do this:
num = 1.30293
round(num, 2)
That rounds to 1.3. I want to know if there is a way to have it round to 1.30; I know it is the same number, but I need it to print 1.30.
You can use string formatting for this. A number in python does not have such a thing as trailing zeros. So your question only make sense for strings.
Example:
>>> num = 1.30293
>>> "{:.2f}".format(num)
'1.30'
The .2f says that this is a float (f) and that you want two digits after the point .2. Read more about string formatting here

Categories