Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Обрезать число   Найти похожие ветки 

 
snake-as ©   (2008-04-26 13:36) [0]

Здравствуйте, подскажите, пожалуйста, как "обрезать" число. Т.е. вместо 0.999999 получить, например 0.99.. Только именно обрезать, а не округлить.. Спасибо заранее..


 
Denis__ ©   (2008-04-26 13:39) [1]

IntToStr(Copy(StrToInt(x),1,3));
Как то так.


 
Denis__ ©   (2008-04-26 13:40) [2]

то есть шучу:) Устал
StrToFloat(Copy(FloatToStr(x),1,3))
Вот как-то так


 
Восхищенный   (2008-04-26 13:40) [3]

Какого типа результат нужен - строка или число?


 
ПостОвый терминатор ©   (2008-04-26 13:42) [4]

>Denis__ ©   (26.04.08 13:39) [1]
Странно, где ты здесь увидел Int?


 
Anatoly Podgoretsky ©   (2008-04-26 13:42) [5]

Только строка, поскольку таких чисел не существует в процессоре


 
snake-as ©   (2008-04-26 13:43) [6]

Число..


 
snake-as ©   (2008-04-26 13:44) [7]

Не понял, в смысле не существует?


 
ПостОвый терминатор ©   (2008-04-26 13:45) [8]

>snake-as ©   (26.04.08 13:43) [6]
Преведи сначала в строку, а затем в число.


 
Anatoly Podgoretsky ©   (2008-04-26 13:47) [9]

> snake-as  (26.04.2008 13:43:06)  [6]

Забудь или переходи на BCD


 
snake-as ©   (2008-04-26 13:47) [10]

Да, теперь понял.. Немного туплю просто.. Ну все равно спасибо всем!


 
ага   (2008-04-26 13:48) [11]


> Anatoly Podgoretsky ©   (26.04.08 13:42) [5]
>
> Только строка, поскольку таких чисел не существует в процессоре

Эээ.... в каком смысле?

> snake-as ©   (26.04.08 13:36)  

uses math
function roundto


 
sniknik ©   (2008-04-26 13:48) [12]

> Забудь или переходи на BCD
денежный тип... тоже подойдет.


 
Восхищенный   (2008-04-26 13:49) [13]

> Denis__ ©   (26.04.08 13:40) [2]

Больше так не шути. И советов таких не давай. Это ж надо такое придумать - перегонять число в число через строку. Из Тулы в Рязань через Камчатку.

> snake-as ©   (26.04.08 13:43) [6]

Например, так: X := Int(Х * 100) / 100.

Но не со всяким числом это получится, имей в виду. Общего решения тут нет, потому что многие десятичные числа в двоичном виде дают бесконечную дробь.


 
Anatoly Podgoretsky ©   (2008-04-26 13:52) [14]

> sniknik  (26.04.2008 13:48:12)  [12]

Денежный тип это разновидность BCD, только ограниченая, всегда 4 знака после запятой. Там можно представить и ,9900 и ,9999


 
Denis__ ©   (2008-04-26 13:53) [15]

Всё нормально будет работать.С лубыми числами. А не

> Но не со всяким числом это получится, имей в виду. Общего
> решения тут нет, потому что многие десятичные числа в двоичном
> виде дают бесконечную дробь.


 
ага   (2008-04-26 13:55) [16]

[11] и еще SetDefaultCW - и всех делов...


 
ага   (2008-04-26 13:58) [17]


> Denis__ ©   (26.04.08 13:53) [15]
>
> Всё нормально будет работать.С лубыми числами. А не

Нет уж :) А как быть с 2,999E+22 например ?


 
sniknik ©   (2008-04-26 13:59) [18]

> Всё нормально будет работать.С лубыми числами. А не
поосторожнее с "обещаниями для всех" ("лубыми")
var
 s: single;
begin
 s:= 0.1;
 ShowMessage(FloatToStr(s));
end;


что видиш при выполнении?


 
Denis__ ©   (2008-04-26 14:08) [19]

Ничего не вижу. Дэлфи под рукой нет. Но всё должно работать, в чём я не прав? и проверку сделать - если число меньше 0.001 то вернуть 0 и всё.


 
{RASkov} ©   (2008-04-26 14:16) [20]

> [19] Denis__ ©   (26.04.08 14:08)
> в чём я не прав?

Потому как через зад делаешь... Хоть это и тоже результат, ...но ты согласишься на операцию с гландами тебе, с такимиже понятиями как и у тебя, доктором? ;)


 
Восхищенный   (2008-04-26 14:16) [21]

> Denis__ ©   (26.04.08 14:08) [19]

> В чём я не прав?

Не в том, что не знаешь особенностей машинной арифметики вещественных чисел. А в том, что споришь о том, чего не знаешь.


 
{RASkov} ©   (2008-04-26 14:25) [22]

> [19] Denis__ ©   (26.04.08 14:08)
> в чём я не прав?

И кстати как вариант твоей неправоты:
С Copy можешь "обломаться" с таким подходом... хоть это и не относиться к твоему "коду" в [2] но если посмотришь [18] то наверное поймешь о чем я...


 
Anatoly Podgoretsky ©   (2008-04-26 19:13) [23]

> Восхищенный  (26.04.2008 14:16:21)  [21]

Ну мы то знаем, как такие называются. Что то с войной связаное.


 
korneley ©   (2008-04-26 22:38) [24]


>...Что то с войной связаное.
 
"Brothers in arms" (c) Mark Knopfler


 
Amoeba ©   (2008-04-26 22:48) [25]

Автору вопроса читать до полного просветления:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


 
Denis__ ©   (2008-04-27 10:26) [26]


> {RASkov} ©   (26.04.08 14:25) [22]

Да, согласен, спасибо. Но в школах именно так учат. Причём, как учат делать через зад, так и учат через зад:) Ну да это лирика. Тогда интересует вопрос, как сделать, чтобы работало всегда?


 
{RASkov} ©   (2008-04-27 10:40) [27]

> [26] Denis__ ©   (27.04.08 10:26)
> как сделать, чтобы работало всегда?

Я думаю, что наверное только на бумажке карандашом можно всегда точно нарисовать вещественное число.... хотя.... может и ошибаюсь...



Страницы: 1 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.016 c
2-1209299390
Азат
2008-04-27 16:29
2008.05.25
простая работа с графикой


15-1207729203
Дмитрий С
2008-04-09 12:20
2008.05.25
КриптоПро CSP


15-1207899177
f_chel
2008-04-11 11:32
2008.05.25
Монитор


3-1197980803
Раиса
2007-12-18 15:26
2008.05.25
Несколько insert-ов (update,delete) в одной транзакции MY SQL


2-1209033156
Начинающий8
2008-04-24 14:32
2008.05.25
Удаление в QUERY