Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2011, 17:31   #1
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию Преобразование типов

При приобразовании типов почему то результат округляется до целых единиц, например код:
Код:
var
x, y : integer;
z : real;
begin
x := 1;
y := 2;
z := x/y;
MessageBox.Show (z.ToString); // вот тут показывает 0, а должен 0.5
end;
Почему так происходит и как лечить?
System.Convert.ToString тоже так же возвращает округлённо.
FaTaL вне форума Ответить с цитированием
Старый 04.03.2011, 17:43   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Может быть, это из-за того, что вы переменной типа real присваиваете результат деления целого числа на целое(при делении целого на целое получается целое). Я тоже сталкивался с такой ошибкой, но в Turbo Pascal.
Попробуйте так:
Код:
var
x, y, z : real;
begin
x := 1;
y := 2;
z := x/y;
MessageBox.Show (z.ToString); 
end;
_-Re@l-_ вне форума Ответить с цитированием
Старый 05.03.2011, 11:21   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Да. В этом была ошибка. Только где такое видано что при делении целого числа на целое получается целое число? Это большая редкость. Например 1 : 2 = 0.5 не целое же число.
FaTaL вне форума Ответить с цитированием
Старый 05.03.2011, 12:00   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ну, такая вот особенность у многих языков, таких как Pascal/C/C++/C# и т.д.
_-Re@l-_ вне форума Ответить с цитированием
Старый 05.03.2011, 12:58   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А если так:
Код:
var
x, y : integer;
z : real;
begin
x := 1;
y := 2;
z := (real)x/y;
MessageBox.Show (z.ToString);
end;
pu4koff вне форума Ответить с цитированием
Старый 07.03.2011, 14:07   #6
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Можно самому управлять форматом вывода:
http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx
http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
Hollander вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование типов jungle Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 04.12.2010 19:41
Преобразование типов rommster Общие вопросы C/C++ 6 23.11.2010 08:11
Преобразование типов ArtGoN Общие вопросы C/C++ 5 16.11.2010 19:35
Преобразование типов Ra88 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 22.07.2010 02:56
Преобразование типов Aleksandra1990 Общие вопросы C/C++ 5 12.05.2010 17:32