Может кто-нибудь, пожалуйста, скажите мне, что не так. когда я набираю уравнения для низких и высоких в калькулятор, я становлюсь низким = 118.129 высокий = 113.629.
Но по какой-то причине как низкий, так и высокий показатель показывает 119.0 при запуске кода.
match_FRC = 82;//Double.parseDouble(FRC_match_textbox.getText().toString());
match_DTR = 1.455;//Double.parseDouble(DTR_match_textbox.getText().toString());
//math functions
low = Math.round((match_FRC * match_DTR)/((1/100)+1));
high = Math.round((match_FRC * match_DTR)/((5/100)+1));
Вам нужно использовать константу с плавающей запятой вместо целых чисел, например:
low = Math.round((match_FRC * match_DTR)/((1.0 / 100)+1));
Как бы то ни было, ваш ((1/100) + 1)
представляет собой целочисленное выражение, которое равно 1.
Создание 1
в 1.0
(или 100
в 100.0
) приведет к продвижению других операндов (и выражения в целом) в плавающую точку.
Вы вводите Math.round()
в калькулятор?
Math.round()
обеспечивает long
, без дробной части. Ваше ожидание, что low
будет содержать фрактальную часть, поэтому не имеет оснований.
Я прост, как математика!
5/100 (Integer) = 0
0 + 1 = 1
82*1.455 = 119.31
119.31 / 1 = 119.31
round ( 119.31 ) = 119
просто измените 100 на 100.0
low = Math.round((match_FRC * match_DTR)/((1/100.0)+1));
high = Math.round((match_FRC * match_DTR)/((5/100.0)+1));
Math.round
) и пытался выяснить, почему я не смог повторить ошибку. Только тогда заметил, что это на самом деле Java. Это работает в JS, потому что JS не имеет целых чисел.