Есть ли способ сделать этот код пригодным для использования в двойных значениях для больших целочисленных или даже десятJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли способ сделать этот код пригодным для использования в двойных значениях для больших целочисленных или даже десят

Сообщение Anonymous »

Код: Выделить всё

import java.util.Scanner;

class Main {
public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
System.out.println("Input a non zero integer between 1 and 214783647: ");
int num = scan.nextInt();
int length = (int)(Math.log10(num));
double mod = Math.pow(10, length);
int digit;
int prevdigit = 0;

while (mod >= 10) {
digit = num;
digit %= mod;
digit = num - digit - prevdigit;
prevdigit += digit;
digit /= mod;
mod /= 10;
System.out.println((int)digit);

}

if (mod == 1) {
digit = num;
digit %= 10;
System.out.println((int)(digit));
}

}
}
Он печатает цифры любого принятого целочисленного значения, но я попытался преобразовать все в двойные значения и запустить его снова, но ему очень понравилось немного менять значения по сравнению с тем, какими они должны были быть.
Я понятия не имею, в чем дело, но я предположил, что это связано с проблемами с точностью значений в переменной Prevdigit, для которой требуется E, но я не уверен.
>
И тогда я буквально понятия не имею, как это можно использовать и для десятичных значений, но если кто-нибудь укажет мне правильное направление, я буду признателен.

Подробнее здесь: https://stackoverflow.com/questions/793 ... teger-valu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»