Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Почему моя программа на java неверно считает проценты от некоторых чисел к примеру 45 от 666?

пишет не 299.7 а 299.69998 код ниже
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("vvedite chislo: ");
float num1 = scan.nextFloat();
System.out.print("vvedite prozenti: ");
float proz1 = scan.nextFloat();
float res1 = num1 / 100;
float res2 = proz1 * res1;
System.out.println("resultat: " + res2);
}
}
Владимир Самарченко
  ·   · 162
Java, Identity Management, Gamedev (UE5)  · 13 мая 2022
Так работает арифметика с плавающей запятой. Эта арифметика в принципе не может хранить и вычислять любые числа _точно_. Вы можете повысить точность используя тип double вместо float, но правильнее будет определиться с тем, какая точность для вашей задачи приемлема, и округлять значения до нужного числа знаков. Если же требуется выполнять операции с неограниченной точностью, то используйте BigDecimal вместо float/double. Деньги часто считают целочисленными типами в "копейках" или десятых копеек, в общем отмасштабировав до целых. Ну или тот же самый BigDecimal.
1 эксперт согласен