>>251362724 Я гуглил про это, представление в двоичном виде там, знак, порядок и мантисса, про внутренее представление понятно. Например, мне непонятен этот момент, допустим я описал переменную float foo = 2.43. Почему его точность 7 цифр? Почему именно 7? Как это связано с вышеописанным (мантисса, знак, экспонента)?
>>251362966 Decimal32 supports 7 decimal digits of significand and an exponent range of −95 to +96, i.e. ±0.000000×10−95 to ±9.999999×1096. (Equivalently, ±0000001×10−101 to ±9999999×1090.) Because the significand is not normalized (there is no implicit leading "1"), most values with less than 7 significant digits have multiple possible representations; 1 × 102=0.1 × 103=0.01 × 104, etc. Zero has 192 possible representations (384 when both signed zeros are included).
Decimal32 floating point is a relatively new decimal floating-point format, formally introduced in the 2008 version[1] of IEEE 754 as well as with ISO/IEC/IEEE 60559:2011.[2]
>>251362966 Потому что под переменную заданного тобой типа (в данном случае float), в памяти выделяется определенное число битов, которые, как ты и сказал, кодируют знак, экспоненту и мантиссу. Из-за ограниченного числа этих ячеек памяти мы и можем хранить числа только с определенной точностью. Для других типов выделяется большее/меньшее число бит, соответственно и точность меняется
>>251363285 Системы счисления, binary-двоичная, decimal-десятичная. Все числа в памяти хранятся в бинарном формате. Прежде чем лезть к вещественным числам, лучше с основами разберись, это по-моему в 6 классе проходят
>>251363336 >std::cout << std::setprecision(2000); >std::cout << 1.23456789f; >1.2345678806304931640625 Это значит что после 7 цифр просто идет радномный мусор который компилятор добавляет?
>>251363486 >Системы счисления, binary-двоичная, decimal-десятичная. Все числа в памяти хранятся в бинарном формате. Ну охуеть теперь, я такой тупой по твоему?
Почему вещественные числа не могут представлять попалам - первая часть n байт это целое количество знаков после запятой, вторая часть n байт это само число, представленное целым.
Пример: 00011000
0001 - 1 знак после запятой
1100 - 12 целое
Итого имеем: 1,2 в вещественном выражении.
Тогда никакой потери точности и не будет. И всяких приколов типа >>251362967
>BCD was used in many early decimal computers, and is implemented in the instruction set of machines such as the IBM System/360 series and its descendants, Digital Equipment Corporation's VAX, the Burroughs B1700, and the Motorola 68000-series processors. BCD per se is not as widely used as in the past and it is no longer implemented in newer computers' instruction sets (e.g. ARM); x86 does not support its BCD instructions in long mode any more.
Advantages Edit Many non-integral values, such as decimal 0.2, have an infinite place-value representation in binary (.001100110011...) but have a finite place-value in binary-coded decimal (0.0010). Consequently, a system based on binary-coded decimal representations of decimal fractions avoids errors representing and calculating such values. This is useful in financial calculations. Scaling by a power of 10 is simple. Rounding at a decimal digit boundary is simpler. Addition and subtraction in decimal do not require rounding. Alignment of two decimal numbers (for example 1.3 + 27.08) is a simple, exact, shift. Conversion to a character form or for display (e.g., to a text-based format such as XML, or to drive signals for a seven-segment display) is a simple per-digit mapping, and can be done in linear (O(n)) time. Conversion from pure binary involves relatively complex logic that spans digits, and for large numbers, no linear-time conversion algorithm is known (see Binary numeral system § Conversion to and from other numeral systems).
Если число записать в экспоненциальном виде float a = 4.3e5f То в какой последовательности он конвертируется в этот двоичный вид? Сначало разжевывается до 430000 а потом засовывается или сразу как 4.3e5f? если второе, то как он там хранится?
Почему 0.1 = 0.10000000000000000555 а 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 = 0.999999999999999888977 Ведь результат второго выражения должно быть > 1.0
>>251362534 (OP) Ну вообще специалистов по плавающей запятой мало, на дваче вряд ли найдутся. Тут надо на специализированные форумы, загугли apache float point foundation.
>>251364669 непригодно для представления больших степеней раз, современные процессоры очень быстро считают float и double, с этим больше нет проблем два, три - требуется подгонка алгоритмов под особенности таких вычислений.
>>251364788 Четыре - float и double могут быть денормализованными, тогда там в мантиссу или экспоненту можно побольше запихать знаков, чем в стандарте, если проц позволяет такие выверты делать. Вроде всё, больше ничего припомнить не могу.
Меня в шараге дрочили этими знаками порядками и мантиссами. А я нихуя уже и не помню.
Я тоже учу язык Си плюсы для шараги. Я застрял на теме классов, интерфейсов, наследования, ООП и шаблонов ООП.
Я тему ООП никак пройти не могу. Я пытаюсь заучить шаблоны. Я не знаю сколько этих шаблонов. Интересно их 100500? Я хочу их заучить. Пока только первые заучил: синглтон, фабричный метод, абстрактная фабрика. Интересно, а сколько их ещё?
>>251364958 И да, совсем забыл, на ряде железок (наверное, уже на всех сейчас) есть ещё long double, там совсем опизденевшая точность. Так что fixed point стал совсем не нужен.
>>251362717 Ты сделал верный выбор, друг. Этот путь сложен и тернист, но в итоге ты станешь тем, кого реально можно назвать программистом. Не слушай вот этих червей-пидарасов >>251363804. Из-за них сегодня стало стыдно говорить, что ты программист. Они превратили уважаемую и наукоемкую профессию в какой-то ебанный дизайнерский цирк в браузере. Каждый раз блевать тянет с джаваскриперов и питонистов. Последние хотя бы не выебываются особо.
>>251365144 Все эти шаблоны вытекают по большей части из SOLIDа, так что поучи лучше его и ты поймёшь почему эти шаблоны есть и зачем они, потом свои сможешь придумывать, лол.
IEEE 754 specifies five arithmetic exceptions that are to be recorded in the status flags ("sticky bits"):
inexact, set if the rounded (and returned) value is different from the mathematically exact result of the operation. underflow, set if the rounded value is tiny (as specified in IEEE 754) and inexact (or maybe limited to if it has denormalization loss, as per the 1984 version of IEEE 754), returning a subnormal value including the zeros. overflow, set if the absolute value of the rounded value is too large to be represented. An infinity or maximal finite value is returned, depending on which rounding is used.
The fact that floating-point numbers cannot precisely represent all real numbers, and that floating-point operations cannot precisely represent true arithmetic operations, leads to many surprising situations
>>251362534 (OP) Вообще забавная хуйня, работаю c# программистом уже второй год, как начал учить с# три года назад, тоже вычитал про дроби, которые зачем-то назыавют "числами с плавающей запятой", начал гуглить что же это за числа с плавающей запятой и обосрался - глубина темы как глубина марианской впадины, тему уходит корнями куда-то в матан и ассемблер. Так и не понял по прошествию времени нахуя в это вникать, просто использую все float, double и decimal в C# как обычные школьные десятичные дроби и не вникаю.
For example, the non-representability of 0.1 and 0.01 (in binary) means that the result of attempting to square 0.1 is neither 0.01 nor the representable number closest to it. In 24-bit (single precision) representation, 0.1 (decimal) was given previously as e = −4; s = 110011001100110011001101, which is
0.100000001490116119384765625 exactly. Squaring this number gives
0.010000000298023226097399174250313080847263336181640625 exactly. Squaring it with single-precision floating-point hardware (with rounding) gives
0.010000000707805156707763671875 exactly. But the representable number closest to 0.01 is
>>251365635 Если в твоей stdlib'е нет перегрузки для float, то будет выполняться implicit type promotion в double, я уже смутно помню, что там может произойти, но, возможно, корень проблемы в этом.
>>251365255 соглы, имхо шаблоны - наеб для гоев, чтобы книжки продавать. Единственное применение - некоторые шаблоны имеют очень выразительные названия и их стоит использовать. А так их знание ни разу не пригодилось кроме как на собесах. Я так понимаю для вкатывателей шаблоны представляются такими себе рецептами хорошего кода - ща заучу названия и код сразу будет хороший.
>>251365575 В том-то и проблема, что реальное программирование – очень сложная наука. Я в универе изучал функциональное программирование 2 семестра (почему-то на Common Lisp, странный выбор из-за аппликативного порядка вычислений). Думал нас более или менее чему-то научили. А от хуй. Я когда решил углубиться в тему, охуел от объемов лямбда-исчисления, комбинаторной логики и ебучих мозговыносящих комбинаторах неподвижных точек, от всех этих стратегий вычислений и т.д. С одной стороны всё это и знать не надо, с другой стороны, понимание этих вещей переворачивает твой взгляд на элементарные вещи. Начинаешь себя ощущать едва ли не полубогом.
>>251366052 unordered_map это контейнер, основанный на определённой структуре данных, на хешах-бакетах, скорее всего (уже не помню). Шаблоны - это про архитектуру.
>>251366530 тебя ебет. Вот тебе правило - флоаты считают не точно, внутри них происходит магия. Не используй флоаты для точных вычеслений. Все что тебе надо знать.
> I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras - families of interfaces that span multiple types. I find OOP philosophically unsound
>>251367207 Even if it is true it is not very interesting - saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms - you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.
>>251367509 >It is as if mathematicians would start with axioms. You do not start with axioms - you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. Што
>>251367597 It keeps all the stuff that I never use in C++ - inheritance, virtuals - OO gook - and removes the stuff that I find useful. It might be successful - after all, MS DOS was - and it might be a profitable thing for all your readers to learn Java, but it has no intellectual value whatsoever. Look at their implementation of hash tables. Look at the sorting routines that come with their "cool" sorting applet. Try to use AWT. The best way to judge a language is to look at the code written by its proponents. "Radix enim omnium malorum est cupiditas" - and Java is clearly an example of a money oriented programming (MOP). As the chief proponent of Java at SGI told me: "Alex, you have to go where the money is." But I do not particularly want to go where the money is - it usually does not smell nice there.
>>251367559 Да там дохрена расписывать по floating point + у тебя же кресты, так что там ещё и куча чисто крестовой ебанины сверху может прилететь со всеми этими манипуляторами и поведениями, может ты вообще на TurboC++ пишешь. Не формат двача, короче. Ищи статьи.
>>251362534 (OP) Грубо говоря у числа есть определенное количество бит под "видимую" часть, которая включает как целую так и дробную часть числа. А так же есть несколько бит под значение, которое определеяет как бы сдвиг точки через степени десятки. Например число вида 1.5500E-2 будет значит, что мы сдвинем точку на 2 порядка влево и получим такое число: 0.015500. А если напишем 1.5500E-100, то точка будет сдвинута на 100 порядков, получив значение, очень близкое к нулю.
>>251367597 Тоже ахуел. Вообще звучит как бред невменяемого. Ну он девелопер языка, так что ему можно еще, но вообще это философствование на ровном месте. Мне поставленные задачи надо решать и иметь для этого удобные инструмены, а он про философские смыслы объектов и интерфейсов. Шиза.
>>251368182 > Question: Have your ever been in Italy, for business or for pleasure?
Answer: Yes, I spent 10 days in Pisa, visited Florence and Lucca. I dream of going to Assisi - I am a Franciscan at heart. I cry during the second act of Tosca and the third act of La Traviata. I keep Dante (in Italian!) on my bed stand. I love pasta, prosciutto and Chianti, - while I am a traditionalist, I look much more like John XXIII than Pius XII.
>>251368038 К несчастью, он очень древний, мультипарадигменный и ни в чём тебя не ограничивает, и в руках знающего человека он способен выдавать потрясающие результаты. Что-то вроде гоночного корча, который одновременно может трансформировать в грузовик или или истребитель. Поэтому сколько его не хоронили, а он всё жив. Хотя область применения всё сужается и сужается.
>>251367632 Погоня за деньгами - плохо. А вот что мне кается красивым - хорошо. Гений. Вообще если подходить к прочтению максимально не предвзято - то здравое зерно есть, но аргументация полнейшая хуйня.
Answer: I was born in Moscow, USSR, on November 16, 1950, and studied Mathematics at the Moscow State University. But I never became a mathematician. I could not really get excited about Tamagawa numbers, Coxeter groups and other things that I was supposed to specialize in. Hardy's hope that his mathematics is never going to be applied is not for me. I need to do something a little bit more real. I was fortunate, however, to see some great mathematicians at work and became totally immune to a pseudo-mathematical rigor that unfortunately is so common in Computer Science. So becoming a programmer was a really good thing for me. In 1972 I became a member of a team developing a new minicomputer to be used to control large hydroelectric power stations. I participated in all parts of the design, from architecture and hardware testing to OS (my first published paper was on real-time operating systems) and programming tools. I learned first hand about both software reliability - power stations are hard to reboot - and efficiency - the water is coming down in real time. At that time I also discovered books of two great computer scientists from whose work I learned the scientific foundation of my trade: Donald Knuth and Edsger Dijkstra. Knuth taught me the answers. Dijkstra taught me the questions. Time and time again I come back to their works for new insights. My next important career step was spending 5 years at the Computer Science Branch of General Electric Research Center in Schenectady, NY. I worked on a very high level language called Tecton and read a lot: from a plethora of papers on programming language design to Logical Summa of William of Occam - Aristotle and medieval logicians knew a lot about different kinds of logical structures that appear in the natural languages and their formal properties
>>251368204 Ну он хотел сказать, что вначале ты должен немного поигать с исследуемой тобою системой, а потом выдумывать правила и аксиомы. Но выражено это настолько коряво, и пример такой безграмотный, что это сложно понять.
Question: You mentioned William of Occam. William of Occam used to say "Entia non sunt multiplicanda" - I could translate that as "[abstract] objects are unnecessary". It seems that you have applied the razor of Occam to OOP. Starting from algorithms rather than from objects kinds of reminds me the medieval quarrel on universals. Is it right?
Answer: It is a pretty analogy, but I do not think it is right. I never thought of OO as related to a realist philosophy and I am not a nominalist at all. As a matter of fact, the Franciscan school: Alexander of Hales, Bonaventure and Scotus are much closer to Augustinian/Platonist tradition. Occam was a strange fellow anyways. As the editor of his Opera Omnia Gideon Gal used to say: "But the fellow was really mad!"
>>251368369 ясн, 70 летний математик добрался до программирования. А дальше давайте послушаем что васерман думает о питоне и джанго, его опыт разработки софта для холодильиков очень важен
>>251365195 Я не понимаю хули питон никому не нравится. Это ж самый быстрый способ накидать хуйни на коленке и чтоб она работала. Хочешь с ООП, хочешь без. Какая кому разница? Главное работает.
>>251368578 Java может и лучше, а джависты долбоебы и комьюнити там состоит из закостенелых дедов, которые что то выдрочили сотню лет назад и не хотят изменений, они даже свой обновления собственного языка по 15 лет не ставят
>>251368811 Лучше js-а -- не такой упопротый. Лучше java -- у него тутор на сайте, который позволяет тебе уже через несколько часов более-менее писать скрипты. Тутор на сайте oracle позволяет тебе только хуйца соснуть.
>>251363545 Представление числа будет отличаться от того что ты запишешь, потому что невозможно представить числа бесконечной точности ограниченным числом бит. Не рандомный, а такой каким его это число сделает парсер. Но оно будет обязательно наиболее близким к тому что ты хочешь.
Суть мантиссы в том, что чем больше число, тем меньше точность его младших значащих чисел и наоборот. То есть когда ты считаешь что-то космических масштабов, то тебе насрать на миллиметры. С другой стороны, когда величины близки к нулю (скажем 10*-99), то у тебя всегда в старших значащих разрядах будут нули, и есть смысл считать такие мелкие числа более точно.
>>251369533 Что не понятно? Со строками + работает как конкатенация, с числами как сложение, - всегда означает вычитание В питоне вон строки можно умножать и ниче, живём, даже нейросети пишем
>>251369567 Просто так получается, что первые 7 цифр записи числа совпадают с тем, что можно получить при обратном конвертировании. А если пошатать двоичную запись числа на один бит больше/меньше, то точность уйдет еще дальше от истинного. Там еще преколы есть с нормализованностью числа, но эту тему я уже не помню.