+ 4

# Is there a way to get rid of useless zeros in bools in Python?

Is there a way to get rid of useless zeros in bools in Python? Otherwise I still have to use my own functions. Example: 1.500000 or 42.0000000 https://code.sololearn.com/cqtT5yT3xnJN/?ref=app

11th Sep 2022, 6:14 AM
Arda Gurses
16 ответов
+ 6
print(f"Output:{inp.rstrip('0').rstrip('.') or 0.0}")
11th Sep 2022, 6:51 AM
Oma Falk
+ 6
Which "bools"? Aren't you rather trying to format floats? They aren't useless, that's how Python represents the numbers. In case you want to use them for further calculations, I would not recommend you to modify them unless you are 100% sure. If it is about representing output, you could just use rounding or string formatting options.
11th Sep 2022, 6:26 AM
Lisa
+ 6
Arda Gurses , Oma Falk , if input is not a float but an int like 9900, the result will be: 99. such inputs can be happen by accident. so it is necessary to check if input is a float or not.
11th Sep 2022, 11:31 AM
Lothar
+ 5
Arda Gurses , here are some thoughts from me: (1) print() will remove all 'useless zeros' except it is the only one of them: print(12.23000) prints: 12.23 print(12.00000) prints: 12.0 print(0.0) prints: 0.0 (2) for all the cases that should have no 'useless zero': print(f'{12.00000:g}') prints: 12 print(f'{0.00000:g}') prints: 0 so we can use f-string for all cases by using the format specifier `g` to get the task done. this does also solve the issue when printing e.g.100 print(f'{100:g}') prints: 100
11th Sep 2022, 6:36 PM
Lothar
+ 5
Jayakrishna🇮🇳 , we can convert string representation of a float to real float datatype. this can be done inside the f-string output: # if `numbers` are given as string format numbers = ['0.0', '123.1200', '333', '1200', '0', '-17.01'] for inp in numbers: print(f'{float(inp):g}')
12th Sep 2022, 10:25 AM
Lothar
+ 5
Jayakrishna🇮🇳 , maybe there is a misunderstanding. in the initial code the op asked to try it with the following values: lst = ['1.00', '32.230000', '0.5', '123.0000'] for num in lst: print( int(float(num))) # your suggested code this is the result: original value after converting with your sample: print( int(float(num))) # your suggested code 1.00 1 => ok 32.230000 32 => NOT ok, should be 32.23 0.5 0 => NOT ok should be 0.5 123.0000 123 => ok
12th Sep 2022, 12:23 PM
Lothar
+ 5
Prince Kumar Floating point rounding may not always accurate. So That's may because rounding issue, depends on method used for rounding even or odd .. Hope this explain more details : https://www.theregister.com/2006/08/12/floating_point_approximation/
13th Sep 2022, 10:52 AM
Jayakrishna 🇮🇳
+ 5
Prince Kumar , if precision matters, it is better to use Decimal format. see the sample in the file. the sample takes the last number from your photo: https://code.sololearn.com/c5QzNuk5m0qr/?ref=app
13th Sep 2022, 11:04 AM
Lothar
+ 3
Lothar Yes. Ok. I may got diverted by examples... I mean, I will use : inp = float(input()) if inp == int(inp) : inp = int(inp) print(f"Your input: {inp}") Or simply your way : print( f"{float(input()):g}") note : all way, using float(), that's what my suggestion, question .. is about.
12th Sep 2022, 3:22 PM
Jayakrishna 🇮🇳
+ 2
Lothar yes we have to take it into account. The zeroes must be "useless". THanks for this point.
11th Sep 2022, 5:56 PM
Oma Falk
+ 2
Lothar My suggestion is only => float(inp) . But why I added int() , is actually not about OP question.. I forgot why added that. May be it's alternative suitables for your example '9900'. Also, 2nd time only observed from OP code is if arr[-1] = '.' : arr.pop() so i thought to making int value.. may be i should see examples again.. But why whole point is asking about only print( float( inp) ) # just.. why I added int, is out of my mind now. But not my actual answer.. OP function is equal to : float( inp ) On need to 1.0 to 1 , we can add int(). float() returns as 1.0 Edit: Yes. OP code returning 1.00 to 1 In that case, int() helps... May be the reason i added int()
12th Sep 2022, 2:49 PM
Jayakrishna 🇮🇳
+ 2
Prince Kumar , thanks.
13th Sep 2022, 9:55 AM
Lothar
+ 1
Why not float(inp) just? print(int(float(inp)))
11th Sep 2022, 12:12 PM
Jayakrishna 🇮🇳
+ 1
But the OP taking value as string.. Not float number.. value is in 'inp' of str type... Is that works fine?
11th Sep 2022, 7:03 PM
Jayakrishna 🇮🇳
+ 1
Arda Gurses I think an important question is how you intend to use these strings (that look like floats) once you have them? If you're not just prettying up what was read from input f