Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
допустим взять как пример:
при изменении даже битности машины, вы перешли на 64 бита и точность машины увеличилась, ваша формула перестанет работать так как точность машины будет куда больше чем вы задаете в своей погрешности.
с уважением.
P.S. возможно возникнуть и другие варианты, при которых ваша формула будет давать сбой на некотором ряде чисел. постоянно подбирать погрешность из за перехода на другую машину или при изменениях в компиляторе, о которых вас не известили, или при изменении представления числа в машине, или из за урезания дробной части числа при компиляции в новых версиях терминала ... да мало ли что может измениться, я считаю это не очень хорошо. сделать IF или мучиться в догадках что будет дальше прописывая погрешность снова и снова...
я думаю есть над чем подумать.
Я не согласен. При увеличении точности формула(y=(int)(x+0.9999999999999997);) не перестанет работать, она будет работать так же. Как и раньше ошибка будет возникать в диапазоне дробной части числа от DBL_EPSILON(текущее значение: 0,00000000000000022204460492503131) до 0,0000000000000003, если даже DBL_EPSILON уменьшиться до нуля (чего быть не может конечно же), то диапазон увеличиться на размер текущего DBL_EPSILON, т.е. на 2.2204460492503131e-016. Я считаю, что на такой диапазон ошибок даже можно не обращать внимания.
И вообще что за термин - "точность машины". Существует стандартизированная точность типа double и других типов. Незачёт Вашим рассуждениям. Про P.S. вообще молчу.))) Боюсь обидеть.
С уважением.
Я не согласен. При увеличении точности формула(y=(int)(x+0.9999999999999997);) не перестанет работать, она будет работать так же. Как и раньше ошибка будет возникать в диапазоне дробной части числа от DBL_EPSILON(текущее значение: 0,00000000000000022204460492503131) до 0,0000000000000003, если даже DBL_EPSILON уменьшиться до нуля (чего быть не может конечно же), то диапазон увеличиться на размер текущего DBL_EPSILON, т.е. на 2.2204460492503131e-016. Я считаю, что на такой диапазон ошибок даже можно не обращать внимания.
И вообще что за термин - "точность машины". Существует стандартизированная точность типа double и других типов. Незачёт Вашим рассуждениям. Про P.S. вообще молчу.))) Боюсь обидеть.
С уважением.
по поводу "не зачет", я не давал оценки вашим рассуждениям и не принижал ваших достоинств, чего и вам желаю. уважайте себя, ткнуть вас мордой в гряз может любой, стоит ли давать повод оппоненту делать это, нарываясь на грубость своими поступками? все мы развиты в чем то, а что то нам просто не интересно или не имеет для нас значения.
раз уж речь зашла об ассемблере и то что вы представляете себе что происходит с кодом после компилятора. скажу несколько фраз, возможно которые будут вам понятны.
поскольку в процессоре ограниченное количество бит в каждом регистре, сложение вычитание или другая операция в них сопряжена с некоторыми тонкостями работы со флагами.
как тот кто работал на ассемблере вы должны понимать о чем идет речь.
так вот скажите мне при команде ADD на разных моделях процессора будет ли переполнение, если вы будете писать на ассемблере код применяя одно и тоже число на разных моделях и вообще может оно не поместиться в какой либо регистр и будет усечено, начиная с 8 битных прошлого поколения до 64 битных и более текущего поколения и как это может измениться в будущем(развитие техники так быстротечно, прошло всего каких то 40 лет, а у нас уже много ядерные процессоры вместо ламповых начала 80х) ?
с уважением.
с уважением.
Ладно, господа отличнички, уговорили. Меняю для вас специально функцию ceil:
данный вариант работает на 25-50% медленнее варианта: y=(int)(x+0.9999999999999997); Но зато максимально корректен, работает так же для отрицательных чисел и при этом все равно быстрее функции ceil(x) где-то в 3 раза
Но сам я, как простолюдин и троечник, буду использовать вариант с девятками, т.к. все ваши доводы считаю занудством и для меня, человека который долгое время программировал на ассемблере и поэтому представляющего что происходит с кодом после компиляции, является излишеством - ставить проверки там, где можно обойтись без них.
Переход на личности традиционно означает отсутствие аргументов по существу.
согласен, а также отсутствие культурного поведения, в попытке унизить собеседника.
с уважением.
по поводу "не зачет", я не давал оценки вашим рассуждениям и не принижал ваших достоинств, чего и вам желаю. уважайте себя, ткнуть вас мордой в гряз может любой, стоит ли давать повод оппоненту делать это, нарываясь на грубость своими поступками? все мы развиты в чем то, а что то нам просто не интересно или не имеет для нас значения.
Переход на личности традиционно означает отсутствие аргументов по существу.
согласен, а также отсутствие культурного поведения, в попытке унизить собеседника.
Ого! Я конечно прошу прощения, если кого-то обидел. Наверное вас задели эти мои слова:
Ладно, господа отличнички, уговорили. Меняю для вас специально функцию ceil:
Но сам я, как простолюдин и троечник, буду использовать вариант с девятками, т.к. все ваши доводы считаю занудством...
И вообще что за термин - "точность машины". Существует стандартизированная точность типа double и других типов. Незачёт Вашим рассуждениям. Про P.S. вообще молчу.))) Боюсь обидеть.
Ну знаете ли... По-моему у вас богатое воображение. В обычном дружеском стёбе вы разглядели "переход на личности", "попытке унизить собеседника", "принижение достоинств"...
Или я что-то упустил, и где-то в другом месте перешёл границы приличия?
Извините, Андрей, но у меня просто, видимо, не хватает знаний и опыта, чтобы понять то, что Вами было написано в том P.S.:
P.S. возможно возникнуть и другие варианты, при которых ваша формула будет давать сбой на некотором ряде чисел. постоянно подбирать погрешность из за перехода на другую машину или при изменениях в компиляторе, о которых вас не известили, или при изменении представления числа в машине, или из за урезания дробной части числа при компиляции в новых версиях терминала ... да мало ли что может измениться, я считаю это не очень хорошо. сделать IF или мучиться в догадках что будет дальше прописывая погрешность снова и снова...
Ещё раз прошу прощения за свой тон. Я всегда выступаю за взаимное уважение между коллегами и корректность поведения. Бес попутал.
Что побудило Вас сокращать время миллиона округлений с 8 до 5 или 2 миллисекунд? Чем реально оказался загружен процессор, если даже такие задержки оказались узким местом? Я таких потребностей не встречал. Может быть, это что-то абстрактное, академический интерес?
лучше открыть профилирование и посмотреть, где в вашем коде тормозит исполнение, и это явно не математические функции. в основном это циклы, разного рода запросы и так далее и тому подобное. математические функции одни из самых быстрых и пытаться что то там выкроить, не очень разумно на мой взгляд.
Ого! Я конечно прошу прощения, если кого-то обидел. Наверное вас задели эти мои слова:
Ну знаете ли... По-моему у вас богатое воображение. В обычном дружеском стёбе вы разглядели "переход на личности", "попытке унизить собеседника", "принижение достоинств"...
если вы позволяете себе "СТЕБАТЬСЯ" над друзьями, у вас нет друзей, есть клоуны вокруг вас, над которыми вы иногда смеетесь и не дорожите их дружбой и мнением.
Или я что-то упустил, и где-то в другом месте перешёл границы приличия?
перешли, я не являлся и не являюсь вам ни другом ни братом ни еще кем то близким, чтоб вы мне могли давать какую то оценку, ТЕМ БОЛЕЕ ПУБЛИЧНО.
Извините, Андрей, но у меня просто, видимо, не хватает знаний и опыта, чтобы понять то, что Вами было написано в том P.S.:буду очень благодарен, если мне кто-то объяснит смысл написанного.
смысл в том что написано в P.S. который вам не понятен по каким то причинам очевиден, вы не знаете как в дальнейшем будет развиваться техника на которой вы применяете свои быстрые формулы, вы не знаете как будет развиваться платформа, вы не знаете что в последствии будет добавлено в компилятор и как будет представляться числа в пространстве регистров процессора, вы ничего этого не знаете и вводить постоянную, утверждая что при ней все будет решаться однозначно положительно и как надо всегда, это, если так можно сказать, заблуждение.
а если учесть что вашу формулу будут брать другие люди с форума и могут запихать ее куда нибуть в С или Pascal или еще куда, вам нужно принимать и эти моменты во внимание, математика не имеет границ ни по платформе, ни по языку программирования.
Ещё раз прошу прощения за свой тон. Я всегда выступаю за взаимное уважение между коллегами и корректность поведения. Бес попутал.
извинения приняты. не повторяйте ошибок снова, иначе ваши слова пустой треп.
с уважением.
Не знаю, с чего вы решили, что у меня что-то тормозит. Напротив, я считаю свои алгоритмы самые быстрые. Просто я немножко больной до быстродействия. Конечно, использование такой альтернативной замены функций округления дает совсем незначительный выигрыш, лишь доли процента. Но как говорится с миру по нитке. Так же происходит, например, в самолетостроении и ракетостроении. В борьбе за уменьшения веса не в ущерб прочности модифицируют всё, даже болты. Может быть это одна из причин, почему в наше время самолет самый безопасный вид транспорта вопреки логике.
с уважением.
если вы позволяете себе "СТЕБАТЬСЯ" над друзьями, у вас нет друзей, есть клоуны вокруг вас, над которыми вы иногда смеетесь и не дорожите их дружбой и мнением.
Похоже что Николай оказался прав насчёт зануд ))
Вот лично я нигде там не увидел перехода на личности. А в ваших постах действительно много букв, но всё как-то мимо темы, такое ощущение что вы спорите просто ради спора.