LINUX.ORG.RU
ФорумTalks

Почему математики не придумали проценты 1000%=целое


0

2

В информатике для целочисленных величин удобно использовать проценты типа 100%=целое для небольших чисел и проценты типа 1000%=целое для чисел побольше. Почему в математике ничего такого полезного нету?

★★★★★
Ответ на: комментарий от Napilnik

Это не новый диалект, это новая версия стандарта (хотя какая уж она новая? 99-й год, ретро). Стандартный C - это тот C, который записан в стандарте (кэп), а актуальный стандарт - C11 (имеющий все фичи C99 + некоторые новые). В нем int64_t и uint64_t есть => это стандартная фича.

Deleted
()
Ответ на: комментарий от drBatty

а не ты ли subj написал?

Меня интересовали практические аспекты задачи а не математические разглагольствования сомнительной полезности.

у говнокодеров и не такие fuckupы бывают. Я не удивлён.

Посмотри на свой говнокод - 10 на 3 не смог поделить без ошибки в тысячной доле.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

если компилятор понимает новые языковые С фичи только с паметром -std=c99 то это значит что у С появился _новый_диалект_

Сам ты, ***, диалект человека. C99 - это стандарт, долбень. Помимо этого, есть C89 и C95. И чтоб gcc собирал под C99, ему надо явно указать эту опцию.

Короче, ламероид процентанутый, вали на свою венду с шизуал-студией, которая тоже нормальные стандарты не понимает. И почитай что-нибудь об основах вычислительной техники, в частности, как в ней хранятся и обрабатываются дробные числа. Когда прочтёшь, проследуй в биореактор.

border-radius
()
Ответ на: комментарий от Napilnik

в переменных типа double в двоичной форме тысячные доли небольших чисел отлично сохраняются.

Потому, что там знаменатель побольше.

PS. Ты вообще читаешь, что тебе пишут?

Deleted
()
Ответ на: комментарий от Deleted

Вероятности - всегда действительные. Целочисленных вероятностей не бывает.

Значит бывают.

Если необходимая точность известна наперед, то в чем проблема использовать фиксированную точку? В общем же случае в чем проблема использовать плавающую точку?

Потому что это ненатуральные числа - в реале яму копает или 1 землекоп или 2 но никак не 1.5 Зачем коверкать реал ради достижения математического идеала?

И вообще, зачем тебе такие понятия, как проценты и промилле?

Удобно же работать с целыми числами, что до точности, то для её достижения понадобится дорогой аппаратный генератор случайных чисел что само по себе нонсенс.

Napilnik ★★★★★
() автор топика
Последнее исправление: Napilnik (всего исправлений: 1)
Ответ на: комментарий от Napilnik

Посмотри на свой говнокод - 10 на 3 не смог поделить без ошибки в тысячной доле.

А ты пытался понять, почему так, или опять от балды бред пишешь?

Deleted
()
Ответ на: комментарий от Deleted

А ты пытался понять, почему так, или опять от балды бред пишешь?

Батти не использовал переменную с плавающей запятой двойной точности - ССЗБ. У переменных одинарной точности такой эффект наблюдается и это надо учитывать.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

Не умничай и используй нормальную двоичную запись вместо этой хрени - в переменных типа double в двоичной форме тысячные доли небольших чисел отлично сохраняются.

не сохраняются. Там формат точно такой-же, как я выше показывал. Тебе просто так кажется, ибо программа вывода округляет. Но вот если-бы у тебя было побольше опыта, ты бы знал, что часто 1 != 3*⅓

drBatty ★★
()
Ответ на: комментарий от Napilnik

Значит бывают.

Вероятность по определению лежит в [0;1]. А там только два целых числа (собственно, 0 и 1).

Потому что это ненатуральные числа - в реале яму копает или 1 землекоп или 2 но никак не 1.5

Как это относится к вероятностям?

Deleted
()
Ответ на: комментарий от Napilnik

Удобно же работать с целыми числами

Чем хуже фиксированная точка?

что до точности, то для её достижения понадобится дорогой аппаратный генератор случайных чисел что само по себе нонсенс.

Какое отношение имеет аппаратный генератор случайных чисел к точности твоих чисел?

Deleted
()
Ответ на: комментарий от Napilnik

Меня интересовали практические аспекты задачи а не математические разглагольствования сомнительной полезности.

тогда я не понимаю, что тебя волнует?

Посмотри на свой говнокод - 10 на 3 не смог поделить без ошибки в тысячной доле.

если-бы ты немного знал математику, я-бы смог доказать тебе, что это невозможно в принципе (в системе счисления с основанием не кратным ₃).

drBatty ★★
()
Ответ на: комментарий от Napilnik

Потому что это ненатуральные числа - в реале яму копает или 1 землекоп или 2 но никак не 1.5

вполне возможно, что и 1.5. Например 3 землекопа могут копать 2 через 2(часа/дня).

Зачем коверкать реал ради достижения математического идеала?

реал никто не коверкал. IRL никто не сможет работать 24/7/365. Потому работоспособность даже сферической лошади < 1л.с.

Удобно же работать с целыми числами, что до точности, то для её достижения понадобится дорогой аппаратный генератор случайных чисел что само по себе нонсенс.

с дробными числами работать также удобно как с целыми. Просто уметь надо. А генератор возьми у Кнута, у него простой.

drBatty ★★
()
Ответ на: комментарий от Napilnik

Батти не использовал переменную с плавающей запятой двойной точности

я использовал число в 8 бит. Я мог-бы взять и в 64 бита, только считать было-бы неудобно, но результат то-же - ошибка произошла-бы. вот тебе перевод поточнее (с точностью 1/2⁶⁴) 11.01010101010101010101010101010101010101010101010101010101010101010₂= 3.33333333333333333331526329712524159276654245331883430480957031250₁₀

как видишь - ошибка есть.

drBatty ★★
()
Ответ на: комментарий от drBatty

не сохраняются. Там формат точно такой-же, как я выше показывал. Тебе просто так кажется, ибо программа вывода округляет. Но вот если-бы у тебя было побольше опыта, ты бы знал, что часто 1 != 3*⅓

Не используй всякие луа и будет тебе точность. Что же касательно программы вывода, то ты или нагло врёшь или используешь очень кривой ЯП. Только что поделил в double 10 на 3, сконвертировал результат в строку и вывел её на экран, ошибка возникла на шестнадцатом знаке после запятой. Использовал паскаль, да.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от drBatty

3.33333333333333333331526329712524159276654245331883430480957031250₁₀

как видишь - ошибка есть.

То что происходит после 16 или >16 знака после запятой есть предел точности который пока меня устраивает.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Чем хуже фиксированная точка?

Ну ты ещё в магазине потребуй чтобы тебе отвесили колбасы в очень удобной системе счисления Хиксоидов или древних евреев а потом покачай права: я же просил взвесить в хиксоидных сиклях а не в еврейских.

Какое отношение имеет аппаратный генератор случайных чисел к точности твоих чисел?

Прямое - тот генератор что есть в каждом ПК неидеален а потому и целых чисел вполне достаточно.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от drBatty

вполне возможно, что и 1.5. Например 3 землекопа могут копать 2 через 2(часа/дня).

Если делать такие допущения то и 2*2=3;

реал никто не коверкал. IRL никто не сможет работать 24/7/365. Потому работоспособность даже сферической лошади < 1л.с.

Ты ещё трудовой кодекс процессору покажи чтобы человекам веселуху устроить.

с дробными числами работать также удобно как с целыми. Просто уметь надо. А генератор возьми у Кнута, у него простой.

Незачем без необходимости и в ущерб основной задаче и экономичности засыпать такой мусор в ПО.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

Не используй всякие луа и будет тебе точность.

ты безнадёжен. Причём тут «луа»?

То что происходит после 16 или >16 знака после запятой есть предел точности который пока меня устраивает.

эх… Какая нафиг разница-то? Чем больше битов, тем выше точность, но точность никогда не станет бесконечной, ибо бесконечного числа битов у нас нет.

Ну ты ещё в магазине потребуй чтобы тебе отвесили колбасы в очень удобной системе счисления Хиксоидов или древних евреев а потом покачай права: я же просил взвесить в хиксоидных сиклях а не в еврейских.

я тебя расстрою, но на сегодня ВСЕ девайсы именно так и считают - в двоичной системе с фиксированной точкой. В т.ч. и твой паскакал.

drBatty ★★
()
Ответ на: комментарий от Napilnik

вполне возможно, что и 1.5. Например 3 землекопа могут копать 2 через 2(часа/дня).

Если делать такие допущения то и 2*2=3;

обоснуй. У цифр выходных и перекуров не бывает.

Ты ещё трудовой кодекс процессору покажи чтобы человекам веселуху устроить.

причём тут процессор? ты про землекопов, или про процессор? Если про процессор, не впутывай землекопов.

Незачем без необходимости и в ущерб основной задаче и экономичности засыпать такой мусор в ПО.

в твой любимый паскакал зачем-то засыпали. Узнай про Random(), и удивись.

drBatty ★★
()
Ответ на: комментарий от drBatty

Причём тут «луа»?

У них все числа double.

эх… Какая нафиг разница-то? Чем больше битов, тем выше точность, но точность никогда не станет бесконечной, ибо бесконечного числа битов у нас нет.

В практическом применении разница есть. Например у меня есть штангенциркуль который показывает десятые доли миллиметра, пока его точности хватает.

я тебя расстрою, но на сегодня ВСЕ девайсы именно так и считают - в двоичной системе с фиксированной точкой. В т.ч. и твой паскакал.

У сосисочника си мозги съели.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

внутри компьютера результат сложения может зависеть от скорости сложения - обнаружено экспериментально

Никогда не превышай скорость сложения!

Archer73
()
Ответ на: комментарий от drBatty

обоснуй. У цифр выходных и перекуров не бывает.

У тех кто их считает, по твоему разумению, бывает, значит если будут складывать многократно то недосложат, потом сумму поделят на количество сложений(которое они должны были сделать), округлят и получат.

причём тут процессор? ты про землекопов, или про процессор? Если про процессор, не впутывай землекопов.

А ты не спрашивал какой землекоп и никто тебе не говорил что он обязан отдыхать или что он будет копать >8 часов с перерывом на обед.

в твой любимый паскакал зачем-то засыпали. Узнай про Random(), и удивись.

Ты больной, но держи кусок html документации, просвещайся

Random

Generate random number
Declaration

Source position: line 0
function Random(

  l: LongInt

):LongInt;

function Random(

  l: Int64

):Int64;

function Random: extended;

Description

Random returns a random number larger or equal to 0 and strictly less than L. If the argument L is omitted, a Real number between 0 and 1 is returned. (0 included, 1 excluded) 
Errors

None. 
See also
Randomize	
  	
Initialize random number generator

Example
Program Example49;

{ Program to demonstrate the Random and Randomize functions. }

Var I,Count,guess : Longint;
    R : Real;

begin
  Randomize; { This way we generate a new sequence every time
               the program is run}
  Count:=0;
  For i:=1 to 1000 do
    If Random>0.5 then inc(Count);
  Writeln ('Generated ',Count,' numbers > 0.5');
  Writeln ('out of 1000 generated numbers.');
  count:=0;
  For i:=1 to 5 do
    begin
    write ('Guess a number between 1 and 5 : ');
    readln(Guess);
    If Guess=Random(5)+1 then inc(count);
    end;
  Writeln ('You guessed ',Count,' out of 5 correct.');
end.
Почему там столько EOL`ов спрашивай не у меня, но может для удобства перевода. Как видим, если загрузить в функцию значение из целочисленной переменной, то и получим целочисленное на выходе, то что можно использовать другую функцию с таким же названием и получить нецелый результат, меня не пугает.

Napilnik ★★★★★
() автор топика

В LORCode Tools, кстати, функция fix на символ промилле заменяет %/10

moscwich
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.