제로처럼 둥글다


12

입력 번호가 주어지면 유효 숫자가 가장 가까운 가장 가까운 숫자로 반올림하십시오.

요구 사항

입력

  • 부동 소수점 숫자
  • 입력 번호 결과가 데이터 유형의 한계 내에서 출력이라고 가정합니다 (즉, 오버플로 오류 무시)
  • 0은 유효하지 않은 입력입니다.
  • 부동 소수점 데이터 형식으로 정확하게 표현할 수없는 숫자 (예 : "0.35"로 저장 0.3499999)는 지원하지 않아도됩니다.

산출

  • 하나의 0이 아닌 숫자와 0의 숫자로 구성된 가장 가까운 숫자입니다.
  • 결과는 음수와 소수를 지원해야합니다.
  • 입력이 두 개의 가능한 출력 사이에 정확히 있으면 0에서 반올림하십시오.

표시

프레젠테이션보다는 프레젠테이션에 중점을 둡니다. 출력은 부동 소수점 데이터 유형일 수 있습니다. 전체 또는 과학적 표기법의 텍스트 일 ​​수 있습니다. 특정 방법을 제시하면 바이트 수가 줄어드는 허점을 발견하면, 당신에게 kudos!

9
-3000
.2
0.2
-.2
7e12
5e-15
1e0

테스트 사례

Input     Output
1         1
10        10
17        20
99        100
54321     50000
56789     60000
-123      -100
-789      -800
0.23      0.2
0.25      0.3
-0.25     -0.3
4.56e23   5e23
4.56e-23  5e-23

채점

일주일 후 바이트 수가 가장 적은 코드가 이깁니다.


3
나는 "하나의 중요한 인물"이 당신이 찾고있는 문구라고 생각합니다.
Steve Bennett

2
0의 반올림 규칙은 매우 이상합니다.
xnor

2
@ xnor, 당신이 맞아요. 0은 1보다 0.0001에 가깝습니다. 0은 단순히 유효하지 않아야한다고 생각합니다.
Hand-E-Food

1
네, 목표 진술과 일치하지 않습니다.
Steve Bennett

답변:


6

MATL , 3 바이트

1&V

온라인으로 사용해보십시오! 또는 모든 테스트 사례를 확인하십시오 .

0.25TIO의 Octave에서 실행되는 컴파일러의 테스트 사례는 실패하지만 Windows의 Matlab에서는 작동합니다.

여기에 이미지 설명을 입력하십시오

sprintf플랫폼에 따라 "뱅커의 반올림"또는 "0에서 0의 반올림"을 사용 하는 Octave / Matlab의 기능으로 인해 다른 동작이 발생 합니다. 자세한 정보 및 테스트는 여기를 참조하십시오 .


의 경우 6 바이트 ,

1t3$Yo

Octave와 Matlab에서 모두 작동합니다. 모든 테스트 사례를 확인하십시오 .


1
"은행가의 반올림"은 제 젤리 답변을 삭제하게 한 것입니다. > _ <
Outgolfer 에릭

@EriktheOutgolfer 네, 그 이유도 알아 냈습니다. Matlab이 그렇게하지 않는 것이 운이 좋다 :-D
Luis Mendo


9

자바 스크립트, 19 바이트

x=>x.toPrecision(1)

0또는 의 사양을 충족하지 않습니다 25.
Anders Kaseorg

흥미 롭군 에 대한 사양 0이 이해가되지 않습니다. 그러나 0.35Javascript가 반올림에서 편견을 피하려고하는 것처럼 보이지만 사양은 편견을 원합니다.
Steve Bennett

이봐, 당신은 당신의 의견을 변경했습니다-당신은 전에 쓴 적이 0.35없습니다 25. 나는 그것이 25에 대한 스펙을 만족한다고 생각합니다. 그것은 "3e + 1"을 돌려줍니다.
Steve Bennett

정확한 부동 소수점 표현이 없기 0.35때문에 에서 변경했습니다 0.35. 동작은 브라우저에 따라 다릅니다. Firefox에서 get를 252e+1습니다.
Anders Kaseorg

예, Chrome과 Firefox에서 서로 다른 두 가지 결과를 얻습니다. 와.
Steve Bennett

4

망막 , 63 62 바이트

1`[1-9]
$*#
#\.?[5-9]
#$&
T`d`0`#[\d.]+
0(\.?)#{10}
1$1
#+
$.0

온라인으로 사용해보십시오!


분명히 당신은 후행 0에 대해 걱정할 필요가 없으므로 마지막 단계를 완전히 제거 할 수 있습니다.
Neil

불행히도이 답변은 실패한 것으로 보입니다 0.99.
Neil

또한 실패합니다 0.099. 수정 시도 : 온라인으로 사용해보십시오!
Neil

또한 실패에 대한 99.99, 100.001...

여전히 잘못되었습니다 0.099. 죄송합니다. 밝은면 에서 세 번째 줄 의 +이후를 제거 할 수 있다고 생각합니다 ;.
Neil


2

T-SQL, 27 바이트

SELECT FORMAT(i,'G1')FROM t

같은 닷넷 서식 코드를 사용 카를로스 알레의 C #을 대답 . 입력에서입니다 플로트나는 기존의 테이블에 t , 우리의 IO의 기준에 따라

테스트 사례 :

Input         Output
------------ --------
1             1
10            1E+01
17            2E+01
99            1E+02
54321         5E+04
56789         6E+04
-123         -1E+02
-789         -8E+02
0.23          0.2
0.25          0.3
-0.25        -0.3
4.56E+23      5E+23
4.56E-23      5E-23

(이 모든 값으로 입력 테이블을 미리로드하여 한 번에 실행할 수 있다는 점은 매우 편리합니다.)


1

파이썬 2 , 62 바이트

lambda x:round(x,-int(floor(log10(abs(x)))))
from math import*

온라인으로 사용해보십시오!

파이썬 골프에는 익숙하지 않지만 작동합니다.

0.35부동 소수점 부정확으로 인해 실패합니다 .

Python 2에서 올바르게 작동한다는 것을 지적한 Anders Kaseorg에게 감사드립니다.


의 출력은 0.25입니다 0.3.
Anders Kaseorg

@AndersKaseorg 왜 그런지 잘 모르겠지만 Javascript 답변과 동일한 부동 소수점 부정확 때문이라고 가정 할 수 있습니다.
Skidsdev

흠 기다림 25도 같은 문제가 있습니다.
Skidsdev

궁금한 round
점이 있으시면

log(x,10)대신을 사용하여 몇 바이트를 골프화 할 수 있습니다 log10(abs(x)).
Alix Eisenhardt


1

엑셀, 14 바이트

=ROUNDUP(A1,1)

사이트에 오신 것을 환영합니다! 이것은 좋은 첫 번째 대답입니다. 다른 사용자가 Excel을 다운로드 할 필요가 없도록 온라인으로 테스트 할 수있는 링크가 있습니까?
caird coinheringaahing

불행히도 라이센스로 인해 무료 Microsoft 사이트가 없다고 생각합니다. 죄송합니다. Code Golf에서 다른 Excel 답변을 보았지만 새로 온 이후로 어떻게 유효성을 검사하는지 잘 모르겠습니다!
rew

대부분의 테스트 사례에서는 작동하지 않습니다. "10 분의 1"위치로 반올림됩니다. 가장 중요한 위치로 반올림 (반올림)해야합니다.
Hand-E-Food



0

4 번째 (2 번째) , 24 바이트

: f 1 set-precision f. ;

온라인으로 사용해보십시오!

부동 소수점 스택에서 입력이 예상됩니다. 출력은 표준 출력

부동 소수점 출력 함수의 전역 (이 인스턴스의 경우) 정밀도를 변경하는 것을 좋아하지 않지만 끝에 이전 값을 복원하지 않아도되도록 많은 바이트를 절약합니다. 입력에 관계없이 공학 또는 과학 표기법으로 출력하지 않습니다.

참고 : 어떤 이유로 tio 인터프리터는로 변환 0.25되고 0.2로컬 설치는로 변환 0.25됩니다 0.3. 이것이 왜인지는 확실하지 않지만 로컬로 올바른 결과를 얻었으므로 대답을 그대로 둡니다.

: f                   \ start a new word definition
  1 set-precision     \ set the floating point output words to use 1 significant digit
  f.                  \ output the top of the floating point stack
;                     \ end the word definition
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.