C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как выделить дробную часть?
kasyava
  Отправлено: 30.07.2005, 14:34


Ученик-кочегар

Группа: Участник
Сообщений: 17



Помогите пожайлуста кто может!!!!

Есть Edit1 в который я ввожу число (например 12,2302) и Edit2 в котором при нажатии на кнопку должно вывестись число после запятой (т.е. 2302).
число знаков после запятой всегда одинаковое...

Буду рад если кто нить подскажет как это делается!!!
Doga
Отправлено: 30.07.2005, 18:26


Мастер участка

Группа: Участник
Сообщений: 575



CODE

double DblA = 12,2302;

double MntsA = DblA — (double)((int)DblA);
Halfdead
Отправлено: 02.08.2005, 08:04


Не зарегистрирован







QUOTE
CODE
double DblA = 12,2302;

double MntsA = DblA — (double)((int)DblA);

Не соответствует тех. заданию (DblA = 12,2302; MntsA = 0,23029999...).
Кстати double перед int не нужен.

2 kasyava:

CODE
double d1 = 12.3456;
Edit2->Text = ((AnsiString)(d1 * 10000))%10000;
Halfdead
Отправлено: 02.08.2005, 08:20


Не зарегистрирован







Скобку не там поставил, читать так:
CODE
Edit2->Text = (AnsiString)(d1 * 10000)%10000;

Хотя и тот вариант рабочий.
Boyko
Отправлено: 02.08.2005, 10:08


Станционный диспетчер

Группа: Участник
Сообщений: 88



QUOTE (kasyava @ 30/07/2005, 13:34)
Буду рад если кто нить подскажет как это делается!!!

Например так:
CODE

int pos=Edit1->Text.AnsiPos(",");
if (pos!=0)
  Edit2->Text=Edit1->Text.SubStr(pos+1,Edit1->Text.Length-pos);
olegenty
Отправлено: 02.08.2005, 10:24


Ветеран

Группа: Модератор
Сообщений: 2412



2 Boyko — тогда уж
CODE

int pos=Edit1->Text.AnsiPos(DecimalSeparator);

а то ХЗ, что там на самом деле является разделителем.
Doga
Отправлено: 02.08.2005, 14:00


Мастер участка

Группа: Участник
Сообщений: 575



2Halfdead

QUOTE

Не соответствует тех. заданию (DblA = 12,2302; MntsA = 0,23029999...).


Как раз соответствует! MntsA = 0,2302 . Похоже Вы объявляли DblA как float. Но даже в этом случае MntsA = 0.2301998 ...


QUOTE

Кстати double перед int не нужен.


Эта запись
CODE

(double)((int)DblA);

дана не для компилятора. Её цель — наглядно продемонстрировать очерёдность действий над операндом и тип возвращаемого значения выражения.

P.S.
QUOTE

Кстати double перед int не нужен.


Запятая после "Кстати" нужна!
biggrin.gif biggrin.gif biggrin.gif
Halfdead
Отправлено: 03.08.2005, 02:24


Не зарегистрирован







Мда...
QUOTE
Как раз соответствует!

Посмотри-ка еще раз, что хотел получить наш молчаливый kasyava, а именно строку "2302". Смотрим, что получаете Вы: "0,2302" — чувствуешь разницу. Причем тут точность я право не знаю.

QUOTE
Её цель — наглядно продемонстрировать очерёдность действий над операндом и тип возвращаемого значения выражения.

ohmy.gif
** avtoritet
Отправлено: 03.08.2005, 02:40


Не зарегистрирован







[QUOTE]Посмотри-ка еще раз, что хотел получить наш молчаливый kasyava, а именно строку "2302". Смотрим, что получаете Вы: "0,2302" — чувствуешь разницу. Причем тут точность я право не знаю.
Скорее всего наш молчаливый kasyava хотел получить имеено 0,2302, а вопрос он задал для таких недогадливых как ты, наверняка, немножко некорректно. Хотя, я думаю, ты один из не многих, кто воспринял этот вопрос таким образом!!!
2302 от 0,2302 — какой смысл? Байда!

Сори, если немного жестоко выразился!
Halfdead
Отправлено: 03.08.2005, 02:59


Не зарегистрирован







QUOTE
kasyava хотел получить имеено 0,2302

Тут даже телепатом не надо быть, чтоб понять обратное.
kasyava писал:
QUOTE
(т.е. 2302)

Ну где вы все увидели "0," ?
** avtoritet
Отправлено: 03.08.2005, 03:33


Не зарегистрирован







1) У касявы точно в школе были или имеются охеренные проблемы с алгеброй (математикой если хотите), например: "... число знаков после запятой всегда одинаковое..." — это не число, а количество.

Будь он помудрее, написал бы в скобках 0,2302.

2) Тебе то халвдид самому случайно не кажится ли, что касяве, нужно получить дробную часть?

3) У касявы сейчас есть ответы на оба варианта. А мы здесь спорим ниочем! Скоро БК "ВильямХил" будет принимать ставки на наш спор!

Вообще, касява, ради приличия что ли, утихомирь нас!

Георгий
Отправлено: 03.08.2005, 07:18


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



QUOTE (kasyava @ 30/07/2005, 15:34)
Есть Edit1 в который я ввожу число (например 12,2302) и Edit2 в котором при нажатии на кнопку должно вывестись число после запятой (т.е. 2302).
число знаков после запятой всегда одинаковое...

да сделайте ему вот это, киньте исходники и он успокоится.
olegenty
Отправлено: 03.08.2005, 07:21


Ветеран

Группа: Модератор
Сообщений: 2412



Так Сергей (Boyko) ему уже ответил. с исходником.
Doga
Отправлено: 03.08.2005, 11:54


Мастер участка

Группа: Участник
Сообщений: 575



QUOTE

Вообще, касява, ради приличия что ли, утихомирь нас!


Причём тут Касява?! Это уже дело приципа!!! biggrin.gif biggrin.gif biggrin.gif
Георгий
Отправлено: 03.08.2005, 21:45


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



QUOTE (olegenty @ 03/08/2005, 08:21)
Так Сергей (Boyko) ему уже ответил. с исходником.

нее smile.gif) тут нужен исходник, что скачивается из нета, распаковывается и компилится smile.gif
olegenty
Отправлено: 04.08.2005, 14:36


Ветеран

Группа: Модератор
Сообщений: 2412



угу, и ещё метнуться за него зарплату получить, пива попить... (типа двое из ларца, одинаковых с лица) smile.gif
kasyava
Отправлено: 05.08.2005, 08:01


Ученик-кочегар

Группа: Участник
Сообщений: 17



Должен сказать, что с алгеброй у меня может быть и не очень, но мне нужно было получить не 0,2302 а именно "2302"...

Но все равно всем огромное спасибо за помощ.....
Оказались полезными оба варианта....


Вернуться в Вопросы программирования в C++Builder