Ох, уж, этот грязный и нечестный ... :(
- Войдите на сайт для отправки комментариев
Вот, мужики, вот, ну ни чуточки не вру ...
Отошёл я значит немного от новогоднего отдыха и с остаточного бодуна на светлую, отдохнувшую голову понадобилось мне из одного целого числа другое вычесть, да так, чтобы результат во float получить. Ну, понятное дело, что я не лох какой, чтобы делать это на калькуляторе или, прости Господи, «столбиком» - что у меня ардуины что-ли не найдётся? Порылся, значить, где бы скетч скачать, не нашёл, пришлось как-то накорябать самому. Накорябал:
#define F1 1073741889L #define F2 1073741888L void setup(void) { Serial.begin(57600); const float df = (float)F1 - F2; Serial.print("F1 = "); Serial.println(F1); Serial.print("F2 = "); Serial.println(F2); Serial.print("df = "); Serial.println(df); }
вроде, всё как у людей, два длинных целых, преобразовываю к float, вычитаю, получаю:
F1 = 1073741889 F2 = 1073741888 df = 128.00
Смотрю, хренею, протираю глаза и опять хренею ... протрезвел ажно. Попробовал вычесть их в уме, потом на калькуляторе, потом (только никому не говорите) «столбиком». Везде получается 1. А на ардуине - аж 128!
Ну, думаю, точно ардуина китайская! Мож у них в Китае 9 - 8 как раз 128 и получается, хрен же их узкоглазых знает! Попробовал на оригинальной итальянской ардуине ... не поверите (я и сам не поверил сначала), но та же хрень!
Тут до меня дошло! Это ж ейный абдуриновский язык нечестный! Вот ежели написать на честном, чистом, тёплом и ламповом С ... да ещё и в линухе, а не в каком-нибудь масдае ... то все калькуляторы можно смело выбрасывать!
Написал
#include <stdio.h> #define F1 1073741889L #define F2 1073741888L void main(void) { const float f3 = (float)F1 - F2; printf(" %d\n- %d\n ----------\n %10.0f\n", F1, F2, f3); }
результат
1073741889 - 1073741888 ---------- 128
Так это ж совсем другое дело! Так что мужики, дурят нас с этой абдуриной ... как лохов разводят! Знайте!
Ну это как с крокодилами
с крокодилами
И чё? Это как-то оправдывает абдурину? Как жить-то, блин? Куда бежать, православные?
О ужас, на винде так же. Что доказывает, что все операционки - говно. :)))
Да, интересное дело:
Даёт:
Разрядности не хватает что ли?
Ну, ТС же сказал - либо ардуина китайская, либо С нечестный. Первое он же и исключил :)
Дак итальянцы - те же цыгане. Могут и китайскую ардуину продать под видом европейской.
Отсюда проблемы начинаются:
....
Мотематики свинью подложили, а не китайцы. Числа свои дурацкие не могут нормально в православный float положить.
--------------
16777216 is exactly 224, and would be represented as 32-bit float like so:
10010111
)0 10010111 00000000000000000000000
(+1) * 2^24 * (1.0 + .0) = 2^24 = 16777216
Now let's look at the number 16777217, or exactly 224+1:
(+1) * 2^24 * (1.0 + 2^-24) = 2^24 + 1 = 16777217
--------------
Мотематики свинью подложили, а не китайцы.
А математики точно не китайские? Может, они "в одном флаконе"? :-)
build-test-float-Desktop_76ce63-Debug/test-float...
1073741893
- 1073741888
----------
5
Мотематики свинью подложили, а не китайцы.
А математики точно не китайские? Может, они "в одном флаконе"? :-)
Математики во всяких умных статьях из интернетов издревле индийские были. Но сейчас, да - начали китайские фамилии появляться. Наверное, в Китае уже налажен выпуск аналогов. Так что не могу не согласиться - определённо пахнет 包子 от всего этого.
Петрович, честно, от тебя такого не ожидал. Сам же говоришь: не стесняйтесь расставлять скобки:
Ну заодно и вычисляться быстрее будет.
Петрович, честно, от тебя такого не ожидал. Сам же говоришь: не стесняйтесь расставлять скобки:
Ну заодно и вычисляться быстрее будет.
и зачем так рано тему слили )))
Петрович, честно, от тебя такого не ожидал. Сам же говоришь: не стесняйтесь расставлять скобки:
Ну заодно и вычисляться быстрее будет.
Нещитова!
Я ж сказал, что нужен результат во float, а Вы чо написали? Вы получаете промежуточный результат в long. Получение промежуточных результатов задача не предусматривала! Нещитова! :-)
и зачем так рано тему слили )))
Что значит слили? Нормальное типа "обсуждение" :-)
Или кто-то эту тему не как шутку воспринял? Вы там эта ... пора выходить из праздников!
слили ещё в 6 посте
And here's the problem.
Сорри, бразерс, я не специально, а проехался по инерции, газуя из"песочницы"...
На самом деле по мне так, самое забавное во флоатах, это когда выражение a != a получается истинным. Вот это действительно доставляет. Пример был в этюде про float.
Ну, проверять float на (не)равентсво - идея так себе... :-) Наерна.
Дык, дида, я понимаю, что сравнивать две переменные. С ними всё понятно, вычислялись по разному и в ХЗ каком знаке отличаются. Но речь то идёт об одной переменной! Саму с собой сравниваешь и ... не равна сцуко! Когда я первый раз с этим столкнулся, до того вштырило ... давненько, правда, прошли времена, когда для меня это было удивительной новостью ... как поэт говорил: "отцвели каштаны, выросли друзья, и в моей причёске поменялось что-то" :-(
А я уже ничему не дывлюся в этом языке. Он тока у Онкеля чесный, видимо, он слова знает какие.
Дак ему святой ассемблер и Атмел студио все фиксят в аутоматическом режиме.