![]() |
В чем дело?
Мне нужно вывести количество дней. Чтобы читалось "по-русски", нужно менять окончание у слова "день" в зависимости от последней цифры количества дней (см. правила русского языка :) ).
d- кол-во дней, integer. t- real. PHP код:
|
Ответ: В чем дело?
Разве в MP нету такой штуки, как MOD ? Что за черезжопство:
t:=Frac(d*0.1)*10; З.Ы. Сам проверить не могу (MP нет), но что-то мне кааца, что t вычисляется неверно. Ибо с использованием Mod (на бейсике) твой перебор If (t=2) OR (t=3) OR (t=4) работает отлично. Логика везде одинаковая, что в паскале, что в бейзике, так что у тебя t неверно вычисляется, перепроверь её значение. PHP код:
|
Ответ: В чем дело?
Лучше обойтись без else
t:=Frac(d*0.1)*10; If t=1 then dney1:='день'; If (t=2) OR (t=3) OR (t=4) then dney1:='дня'; If t>4 then dney1:='дней'; |
Ответ: В чем дело?
Ну, тогда If t>4 then dney1:='дней'; будет работать неправильно, т.к. 'дней' будет и при 0, -> нужно ещё условие
|
Ответ: В чем дело?
сам ты черезжопство, математику учи. Всё помоему элементарно. А t вычисляется 100% правильно. Ошибка в If идет, но изза чего не пойму.
Frac откидывает целую часть своего аргумента. |
Ответ: В чем дело?
Элементарно ещё не значит хорошо.
По-вашему 2+2+2+2 лучше чем 2*4? Ведь первое же элементарнее! |
Ответ: В чем дело?
Цитата:
Что говорит дебаггер по поводу t ? |
Ответ: В чем дело?
тип real с большими погрешностями даже в элементарных операциях, используй преобразование trunc, а лучше сразу mod.
p.s.: сравнение на равенство ни когда не используй для дробных чисел, надо так: if abs(t-1)<0.001 then ... |
Ответ: В чем дело?
проще наверно перевести в string и брать символ крайний справа.
|
Ответ: В чем дело?
Вот, парни, не мучайтесь:
PHP код:
|
Ответ: В чем дело?
Цитата:
|
Ответ: В чем дело?
Всем спасибо, раньше не было времени всё попробовать. Вариант с мод действительно лучший :)
|
Часовой пояс GMT +4, время: 16:31. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot