@P_Alexander
First head

Проблема с BigDecimal,с методом miltiply(), в чем дело?

Проблема в том что я не пойму почему эта строчка return h.multiply(y); считает не правильно!! должно вернуть 4, а возвращает 8!
Вот код
package testone;
import java.math.*;
import java.util.Scanner;

public class TestOne
{

BigDecimal s;
BigDecimal f;
BigDecimal h;
BigDecimal y;
public BigDecimal ceil (int a, int b)
{
s = BigDecimal.valueOf(a);
h = BigDecimal.valueOf(b);
y = BigDecimal.valueOf(1);

//return ((a+b-1)/b);
f = ((s.add(h).subtract(y)).divide(h,BigDecimal.ROUND_HALF_DOWN));
System.out.println(" ceil ---" + f);
return f;
}

public BigDecimal getRezult(int m, int n, int a)
{
h = ceil(m , a);
System.out.println("hhhhhh ---" + h);
y = BigDecimal.valueOf(0);
y = ceil(n , a);
System.out.println("yyyyyyyyyyyy ---" + y);
System.out.println("h.multiply(y) -----" + h.multiply(y));
return h.multiply(y);
//return ceil(m , a) * ceil(n , a);
}
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int m = scan.nextInt();
int a = scan.nextInt();
TestOne z = new TestOne();
System.out.println(z.getRezult(m, n, a));
}
}

Вывод программы:
run:
6
6
4
ceil ---2
hhhhhh ---2
ceil ---2
yyyyyyyyyyyy ---2
h.multiply(y) -----8
8
BUILD SUCCESSFUL (total time: 10 seconds)
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
При вызове y = ceil(n , a); вы изменяете значение h
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Прошу прощения, но Вы, когда вопрос свой задаёте и код выкладываете, побеспокойтесь хотя бы о его читаемости, ведь люди, типа меня, может и хотят помочь, но вникать в сплошной текст - нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы