Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перевод дробных чисел - не правильный результат 
:(
    Опции темы
ArniLand
Дата 13.3.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



Написал программу которая переводит из 4-ричной в двенадцатеричную систему счисления. Например вожу число 2,3 в 4ричной системе счисления, в результате должно выйти 2,9 в двенадцатеричной. Но в программе выдает 2.3724972497. Не могу понять что не так считает. Так же вылает надпись "wrong input", но она должна вылетать только в случае когда числа введены числа в пределах меньше 0  и больше 3. Вот код программы: 


Код

package laba12_architecture_drob;
import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
     public void from4to12() {
        Scanner in = new Scanner(System.in);
        String x;
        x = in.nextLine(); //введённое число
        char[] mas = x.toCharArray();
        for(int i=0;i<=x.length();i++)
        {
            if(mas[i]!='0' || mas[i]!='1' || mas[i]!='2' || mas[i]!='3' || mas[i]!='.') {
                System.out.println("Wrong input"); break;}
        }
        double x_dbl = Double.parseDouble(x); //конверт в дабл
        int cel_ch = (int)x_dbl; // выделение целой части
        String s = Integer.toString(cel_ch); //целая часть в строку
        int r = Integer.parseInt(s, 4); //из четыричной в десятичную

        int l = x.length()-s.length()-1; // длинна дробной части (общая - целая - ".")
        double drob_ch = x_dbl-cel_ch; //дробная часть числа
        BigDecimal bd = new BigDecimal(drob_ch);
        bd = bd.setScale(l, BigDecimal.ROUND_HALF_UP);
        drob_ch = bd.doubleValue();
        String dr = "";
        int a;
        for(int i=0;i<10;i++)
        {
            drob_ch = drob_ch * 12;
            a = (int)(drob_ch);
            if(a == 10) dr += "A";
            if(a == 11) dr += "B";
            else dr += a;
            drob_ch = drob_ch - a;
        }
        System.out.println(String.valueOf(Integer.toString(r, 12) + "." + dr));
    }
     public static void main(String[] args) {
        Main obj = new Main();
        obj.from4to12();
    }
}


PM MAIL   Вверх
mstalker26
Дата 14.3.2011, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 4.7.2009

Репутация: 4
Всего: 11



Цитата

 вожу число 2,3


Код

mas[i]!='0' || mas[i]!='1' || mas[i]!='2' || mas[i]!='3' || mas[i]!='.'


запятую ты не учитываешь, вводи 2.3 или добавь
Код

mas[i]!='0' || mas[i]!='1' || mas[i]!='2' || mas[i]!='3' || mas[i]!='.' || mas[i]!=','

--------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
PM   Вверх
ArniLand
Дата 14.3.2011, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



оно и на точку выдает wrong input
PM MAIL   Вверх
meugen
Дата 14.3.2011, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.6.2007
Где: Запорожье

Репутация: нет
Всего: нет



Вместо
Код

for(int i=0;i<=x.length();i++)

нужно написать
Код

for(int i=0;i<x.length();i++)

PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.