부동 소수점 숫자를 가장 가까운 정수로 반올림 하시겠습니까?
소수점 숫자를 가장 가까운 정수로 내림하고 싶습니다. 그러나 전체가 아닌 경우 다음 정수에 얼마나 가까운 지에 관계없이 항상 변수를 반올림하고 싶습니다. 이 작업을 수행하는 방법이 있습니까?
단순한
print int(x)
잘 작동합니다.
다음 중 하나가 작동합니다.
import math
math.trunc(1.5)
> 1
math.trunc(-1.5)
> -1
math.floor(1.5)
> 1
math.floor(-1.5)
> -2
x//1
// 연산자는 분할의 바닥을 반환합니다. 1로 나누어도 숫자는 바뀌지 플로어와 동일하지만 오기가 필요하지 않습니다. 참고 :
1) 부동 소수점을 반환합니다.
2) -∞쪽으로 반올림합니다.
바닥 기능이 필요하다고 생각합니다.
부동 소수점 결과를 얻으려면 다음을 사용하십시오.
round(x-0.5)
음수 작동이 작동합니다.
많은 사람들이 다음을 사용합니다.
int(x)
그리고 대부분의 경우에 잘 작동하지만 약간의 문제가 있습니다. OP의 결과가 다음과 같은 경우 :
x = 1.9999999999999999
그것은
x = 2
16 일 9 일 이후에는 반올림됩니다. 그런 일을 선언하지 않을 것입니다. 그러나 명심해야 할 사항입니다.
수학을 가져 오기 위해 사용할 수 있습니다.
int(round(x))
다음은 문서입니다.
>>> help(round)
Help on built-in function round in module __builtin__:
round(...)
round(number[, ndigits]) -> floating point number
Round a number to a given precision in decimal digits (default 0 digits).
This always returns a floating point number. Precision may be negative.
numpy로 작업하는 경우 음수로 작동하는 다음 솔루션을 사용할 수 있습니다 (배열 작동하는 경우)
import numpy as np
def round_down(num):
if num < 0:
return -np.ceil(abs(num))
else:
return np.int32(num)
round_down = np.vectorize(round_down)
round_down([-1.1, -1.5, -1.6, 0, 1.1, 1.5, 1.6])
> array([-2., -2., -2., 0., 1., 1., 1.])
math
모듈 대신 모듈을 사용하면 작동 할 생각합니다 numpy
.
이 문제를 해결했는지 모르겠지만이 질문을 우연히 발견했습니다. 십진수를 모두 제거 할 수 있습니다. round (x)를 사용할 수 없습니다.
make round (x-0.5) 이것은 항상 Float의 다음 반올림 된 Integer 값을 반환합니다. do round (x + 0.5)로 쉽게 반올림 할 수 있습니다.
매우 간단 할 수 있지만, 마이너스 1로 반올림 할 수 없습니까? 예를 들면 :
number=1.5
round(number)-1
> 1
이 코드를 사용하여 숫자에서 0.5를 빼고 반올림하면 원래 숫자를 반올림했습니다.
원형 (a-0.5)
'IT' 카테고리의 다른 글
데스크톱에 바로 가기 만들기 (0) | 2020.08.24 |
---|---|
WPF의 페이지로드시 콤보 상자에 기본 텍스트 "--Select Team-"을 표시하는 방법은 무엇입니까? (0) | 2020.08.24 |
Python에서 정규식을 사용하여 URL을 어떻게 사용합니까? (0) | 2020.08.22 |
자바를 사용하여 이미지 높이와 너비를 얻는 방법은 무엇입니까? (0) | 2020.08.22 |
"여러 곳에서 구현할 수있는 방법을 구현할 수 있습니다." (0) | 2020.08.22 |