![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обрезать число
snake-as © (2008-04-26 13:36:00)Здравствуйте, подскажите, пожалуйста, как "обрезать" число. Т.е. вместо 0.999999 получить, например 0.99.. Только именно обрезать, а не округлить.. Спасибо заранее..
{RASkov} (2008-04-27 10:40:00) [1]> [26] Denis__ © (27.04.08 10:26)
> как сделать, чтобы работало всегда?
Я думаю, что наверное только на бумажке карандашом можно всегдаточно нарисовать вещественное число.... хотя.... может и ошибаюсь...
Denis__ (2008-04-27 10:26:00) [2]
> {RASkov} © (26.04.08 14:25) [22]
Да, согласен, спасибо. Но в школах именно так учат. Причём, как учат делать через зад, так и учат через зад:) Ну да это лирика. Тогда интересует вопрос, как сделать, чтобы работало всегда?
Amoeba (2008-04-26 22:48:00) [3]Автору вопроса читать до полного просветления:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
korneley (2008-04-26 22:38:00) [4]
>...Что то с войной связаное.
"Brothers in arms" (c) Mark Knopfler
Anatoly Podgoretsky (2008-04-26 19:13:00) [5]> Восхищенный (26.04.2008 14:16:21) [21]
Ну мы то знаем, как такие называются. Что то с войной связаное.
{RASkov} (2008-04-26 14:25:00) [6]> [19] Denis__ © (26.04.08 14:08)
> в чём я не прав?
И кстати как вариант твоей неправоты:
С Copy можешь "обломаться" с таким подходом... хоть это и не относиться к твоему "коду" в [2] но если посмотришь [18] то наверное поймешь о чем я...
Восхищенный (2008-04-26 14:16:00) [7]> Denis__ © (26.04.08 14:08) [19]
> В чём я не прав?
Не в том, что не знаешь особенностей машинной арифметики вещественных чисел. А в том, что споришь о том, чего не знаешь.
{RASkov} (2008-04-26 14:16:00) [8]> [19] Denis__ © (26.04.08 14:08)
> в чём я не прав?
Потому как через зад делаешь... Хоть это и тоже результат, ...но ты согласишься на операцию с гландами тебе, с такимиже понятиями как и у тебя, доктором? ;)
Denis__ (2008-04-26 14:08:00) [9]Ничего не вижу. Дэлфи под рукой нет. Но всё должно работать, в чём я не прав? и проверку сделать - если число меньше 0.001 то вернуть 0 и всё.
sniknik (2008-04-26 13:59:00) [10]> Всё нормально будет работать.С лубыми числами. А не
поосторожнее с "обещаниями для всех" ("лубыми")
var
s: single;
begin
s:= 0.1;
ShowMessage(FloatToStr(s));
end;
что видиш при выполнении?
ага (2008-04-26 13:58:00) [11]
> Denis__ © (26.04.08 13:53) [15]
>
> Всё нормально будет работать.С лубыми числами. А не
Нет уж :) А как быть с 2,999E+22 например ?
ага (2008-04-26 13:55:00) [12][11] и еще SetDefaultCW - и всех делов...
Denis__ (2008-04-26 13:53:00) [13]Всё нормально будет работать. С лубыми числами. А не
> Но не со всяким числом это получится, имей в виду. Общего
> решения тут нет, потому что многие десятичные числа в двоичном
> виде дают бесконечную дробь.
Anatoly Podgoretsky (2008-04-26 13:52:00) [14]> sniknik (26.04.2008 13:48:12) [12]
Денежный тип это разновидность BCD, только ограниченая, всегда 4 знака после запятой. Там можно представить и ,9900 и ,9999
Восхищенный (2008-04-26 13:49:00) [15]> Denis__ © (26.04.08 13:40) [2]
Больше так не шути. И советов таких не давай. Это ж надо такое придумать - перегонять число в число через строку. Из Тулы в Рязань через Камчатку.
> snake-as © (26.04.08 13:43) [6]
Например, так: X := Int(Х * 100) / 100.
Но не со всяким числом это получится, имей в виду. Общего решения тут нет, потому что многие десятичные числа в двоичном виде дают бесконечную дробь.
sniknik (2008-04-26 13:48:00) [16]> Забудь или переходи на BCD
денежный тип... тоже подойдет.
ага (2008-04-26 13:48:00) [17]
> Anatoly Podgoretsky © (26.04.08 13:42) [5]
>
> Только строка, поскольку таких чисел не существует в процессоре
Эээ.... в каком смысле?
> snake-as © (26.04.08 13:36)
uses math
function roundto
snake-as (2008-04-26 13:47:00) [18]Да, теперь понял.. Немного туплю просто.. Ну все равно спасибо всем!
Anatoly Podgoretsky (2008-04-26 13:47:00) [19]> snake-as (26.04.2008 13:43:06) [6]
Забудь или переходи на BCD
ПостОвый терминатор (2008-04-26 13:45:00) [20]> snake-as © (26.04.08 13:43) [6]
Преведи сначала в строку, а затем в число.