Вещи, чтобы быть в курсе, когда делать с плавающей точкой arithematic:
Вы FRIST путь, someValue/3600
собирается сначала вычисляется, и это целочисленное деление, и оно даст вам целое число, а затем добавляется к двойному, что не дает вам правильный ответ.
Вы должны иметь оба значения, являющиеся двойными. Поэтому ваш второй способ должен работать. Просто немного дополнительной информации здесь: вам не нужно заставлять оба числа удваивать. Во время деления, если компилятор обнаружил, что одно из значений является целым числом, а другое - двойным, целое число будет увеличено до double для вычисления, давая вам тот же результат.
Возможно, вы когда-нибудь найдете результат «неточным», даже если вы используете второй способ. Это связано с тем, что число с плавающей запятой является только двоичным приближением, которое не может точно представлять все десятичные значения. Вы можете использовать BigDecimal, если хотите «точное» десятичное значение, или научитесь правильно обрабатывать число с плавающей запятой.
Что вы будете делать? Каковы ваши фактические результаты? Приведите примеры. –
'(double) someValue/3600' или' someValue/3600.0' достаточно, чтобы «продвигать все», чтобы удвоить/удвоить, если 'someValue' еще не является двойным. Во всяком случае, что «не работает», «безрезультатно»? – user2864740
«Точное значение» может быть невозможно в двоичном или десятичном формате. Что бы вы ожидали, если, скажем, длинные были 10, а int - 3? –