37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
|
|
||
|
import math
|
||
|
|
||
|
# Bump the decimal point up by numberOfDecimal points,
|
||
|
# add 0.5 to make floor go from 0-1 to 0.5-1.5,
|
||
|
# then add back the decimal points.
|
||
|
def myRoundFunction(number, numberOfDecimals):
|
||
|
decimalFactor = 10 ** numberOfDecimals
|
||
|
return math.floor(number * decimalFactor + 0.5) / decimalFactor
|
||
|
|
||
|
def removeEmptyDecimals(number):
|
||
|
hasEmptyDecimals = (number == int(number))
|
||
|
return int(number) if hasEmptyDecimals else number
|
||
|
|
||
|
def inputTypeCheck(message, type, errorMessage):
|
||
|
while True:
|
||
|
inputValue = input(message)
|
||
|
try:
|
||
|
return type(inputValue)
|
||
|
except ValueError:
|
||
|
print(errorMessage)
|
||
|
|
||
|
number = inputTypeCheck(
|
||
|
message='Gi inn et desimaltall: ',
|
||
|
type=float,
|
||
|
errorMessage='Beklager, det du skrev inn er ikke et nummer. Prøv igjen\n'
|
||
|
)
|
||
|
|
||
|
numberOfDecimals = inputTypeCheck(
|
||
|
message='Antall desimaler i avrunding: ',
|
||
|
type=int,
|
||
|
errorMessage='Beklager, det du skrev inn er ikke et heltall. Prøv igjen\n'
|
||
|
)
|
||
|
|
||
|
roundedNumber = removeEmptyDecimals(myRoundFunction(number,numberOfDecimals))
|
||
|
print(f'Avrundet til {numberOfDecimals} desimal: {roundedNumber}')
|