을 반환과 방법 Math.ceil 및 Math.floor를 사용하여 이러한 방법으로 내 배를 구문 분석, 나는 같은 값을 반환받을 나, 23입니다 ...이 Math.ceil 및 Math.floor 내가 <p>더블 (23.46)</p>이 같은 값
나는 24로 반올림하고 싶습니다. 다른 말로하면, 내가 15.01의 두 배가되면, 16으로 반올림되어야합니다 ... 어떻게해야합니까? ?
을 반환과 방법 Math.ceil 및 Math.floor를 사용하여 이러한 방법으로 내 배를 구문 분석, 나는 같은 값을 반환받을 나, 23입니다 ...이 Math.ceil 및 Math.floor 내가 <p>더블 (23.46)</p>이 같은 값
나는 24로 반올림하고 싶습니다. 다른 말로하면, 내가 15.01의 두 배가되면, 16으로 반올림되어야합니다 ... 어떻게해야합니까? ?
없습니다
public class Test
{
public static void main(String[] args)
{
System.out.println(Math.ceil(23.46)); // Prints 24
System.out.println(Math.floor(23.46)); // Prints 23
}
}
내가 용의자 중 당신은 당신이 또는 당신은 당신이 생각하는 출력 데이터를 작성하지 않을 생각 입력 데이터 없어요. Math.floor
/ceil
자체가 정상적으로 작동합니다. 동일한 값을 반환하는 유일한 시간은 입력이 이미 정수인 경우입니다. 당신은 에 대해 말하면 두 배로 ... 내 생각 엔 그 오류가 거짓말이라고 생각합니다. 문제를 보여주는 짧지 만 완전한 프로그램을 보여주십시오.
(가 정확한 목표 정수 정확히 double
로 표현할 수없는 매우 큰 값을 주변의 다른 시나리오가있을 수 있습니다 - 내가 확인하지 않은 -하지만 여기서 확실히 그렇지 않다.) 코드
"동일한 값을 반환하는 유일한 시간은 입력이 이미 정수 인 경우입니다."이것은 결국 내 문제가되었습니다. 내 멍청한 실수, 도와 줘서 고마워. – Tiwaz89
내가
System.out.println(Math.ceil(23.46));
System.out.println(Math.ceil(15.01));
내가
24.0
16.0
가 당신이 원하는 아닌가요 얻을 실행하면? 재현
예상대로
24.0
23.0
그래서 작동 :
System.out.println(Math.ceil(23.46));
System.out.println(Math.floor(23.46));
나에게 다음과 같은 출력을 제공합니다.
실제 호출은 어떻게합니까? 이중 객체 또는 기본 유형을 사용하여 결과를 복제 할 수 없습니다.
이 코드 :
Double d_object = new Double(23.46);
double d_simple = 23.46;
System.out.println("Ceiling simple: " + Math.ceil(d_simple));
System.out.println("Floor simple: " + Math.floor(d_simple));
System.out.println("Ceiling object: " + Math.ceil(d_object));
System.out.println("Floor object: " + Math.floor(d_object));
이 날 제공 :
Ceiling simple: 24.0
Floor simple: 23.0
Ceiling object: 24.0
Floor object: 23.0
float x = ((float)2346/100); // You should type cast. Otherwise results 23
Math.ceil(x); // So Math.ceil(23) is 23 !!!
// Here I type cast to float.
// So I get the result 24
당신이 Math.ceil (23.46) = 23을 가지고 방법을 보여 재현 코드를 게시하세요? – smci
이 질문과 다소 관련이있는 경우 ceil과 floor는 double이 정밀도를 잃어버린 경우 같은 값을 출력 할 수 있습니다. 예를 들어 System.out.println ("ceil :"+ Math.ceil ((100000000000000000000L))/2.0)); System.out.println ("floor :"+ Math.floor ((1000000000000000000L-1)/2.0)); 모두 5.0E17을 제공합니다. – Deep