public class Test {
public static void main(String[] args) {
BigDecimal decimal = new BigDecimal("3.5", new MathContext(0, RoundingMode.HALF_EVEN));
System.out.println(decimal);//вывод почему-то 3.5 а не 3.0
decimal = decimal.round(new MathContext(0, RoundingMode.HALF_EVEN));
System.out.println(decimal);//даже сейчас вывод не 3.0 а 3.5!!
}
}
почему не округляется?package com.javarush.task.task18.task1820;
/*
Округление чисел
*/
import java.io.*;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream inputStream = new FileInputStream(reader.readLine());
FileOutputStream outputStream = new FileOutputStream(reader.readLine());
reader.close();
String number = "";
int theLastSymbol=0;
ArrayList<String> list = new ArrayList<>();//список чисел в виде символов
while (inputStream.available()>0) {//тут записываются числа в список в виде символов
theLastSymbol = inputStream.read();
if ((char) theLastSymbol!=' '){
number=number+(char)theLastSymbol;
}
else{
list.add(number);
number="";
}
}
inputStream.close();
if((char)theLastSymbol!=' ')
list.add(number);//добавляю почледнее число, если файл не заканчивается пробелом
ArrayList<BigDecimal> resultList = new ArrayList<>();
for(String num:list) {//инициализирую список BigDecimal'ов
resultList.add(new BigDecimal(num, new MathContext(0, RoundingMode.HALF_EVEN)));//числа из символов превращаются в биг десимал округляясь до 0 знаков почле запятой, что-то тут не так :-(
}
Character c = ' ';
Integer integer;
for(BigDecimal decimal:resultList){//наконец заношу все числа в тот файл, в который нужно занести
decimal=decimal.round(new MathContext(0,RoundingMode.HALF_EVEN));//перед зансением числа в файл ЕЩЁ раз его округляю, тут тоже не работает D-:
integer =decimal.intValue();
outputStream.write(integer.toString().getBytes());
outputStream.write(c);
}
outputStream.close();
}
}