1 или 1f ?

Раздел, посвящённый самому важному - скорости.

Re: 1 или 1f ?

Сообщение pod4444 07 авг 2012, 10:27

у Вас кажется паранойя.
и с каких пор "диалект" С стал хреновым? по-моему все отлично.
в настоящей Java и С, С++ дела обстоят так же.
в выражение "float a = 10\3" Вы нигде явно не указываете тип, Вы указываете тип переменной, в которую нужно сохранить выражение по тому сторону равно, а там делятся целочисленные.
Синтаксис:
Используется csharp
        void Awake()
        {
            int a = 2;
            int b = 3;
            int c = 5;
            float d = ((float)a / b) / ((float)b / c) / ((float)a / b);
            Debug.Log(d);
            d = ((float)a / b) / ((float)b / c / a / b);
            Debug.Log(d);
            d = (a + b) / ((float)b / c / a / b);
            Debug.Log(d);
            d = (a + b) / (float)(a + c);
            Debug.Log(d);
        }
 


такой код вполне ясен и логичен.
Последний раз редактировалось pod4444 07 авг 2012, 11:42, всего редактировалось 3 раз(а).
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: 1 или 1f ?

Сообщение seaman 07 авг 2012, 10:29

Синтаксис:
Используется csharp
float a= (формула с участием инта)/ ((float)формула с участием инта);

Так работает. Можно даже в знаменателе float убрать, но тогда будет потеря дробной части, т.е. a будет равно целой части дроби, что обычно не нужно. (См. ниже четвертое замечание)
пайтоновскя 1/3 as float

1 / 3f работает
float явно не конвертируется в double

Это совсем не понял. Явно все конвертируется как Вы напишете. Неявно конвертируется только float->double. Наоборот нет, т.к. число double не влазит во float и компилятор просит Вас явно подтвердить, что Вы это понимаете.
float a=10/3; в той же джаве даст НОРМАЛЬНЫЙ результат в 3.3333... А в сишарпе решили, увы, по индусски.. Оно даст 3!

int / int дает int. Потом оно преобразуется во float (неявно). Получаем float равный целой части деления. Возможно это не очень удобно, но увы так.

ЗЫ: Поизучайте еще C# - думаю постепенно привыкнете и станет достаточно удобно.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: 1 или 1f ?

Сообщение Woolf 07 авг 2012, 11:38

Далеко на яве не уйдешь.. \:D/

Хм.. Ну почему-же? Для серверного программирования, на мой взгляд, лучше пока ничего не сделали. Сейчас вот мучаю фотон на предмет многотысячной ММО - вот честно скажу, сишарп не впечатляет в качестве серверного языка. Но это мой взгляд, я всего год пишу на нем, может я что-то не замечаю )) Ну и к тому же, для джавы есть почти нативный eclipse, с которым (опять таки, - на мой взгляд) никакая студия кривоватая не сравнится.

т.к. число double не влазит во float и компилятор просит Вас явно подтвердить, что Вы это понимаете


В том то и дело, что 0.5 он трактует, как double.. Ну зачем вот это? Почему не single (float) ? Для кого сделано так, что без f - это double? Видимо для индусов. А вот эти скобки обязательные для вызова методов класса? Ну я про foo.method().. Тоже для того, чтобы я не забыл, что это метод, а не переменная? Но это же бред. На джаве я писал, с сишарпой - сражаюсь с тупыми и надуманными ограничениями. Я уж молчу про "стиль кода"... Если эклипс "напоминал", что переменные принято называть с маленькой, а классы с большой (это не ошибка - нет! это просто вот такой правильный ворнинг), то студии, как я понял - глубоко по барабану. Потом и появляются жутконечитаемые скрипты в одну строку.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: 1 или 1f ?

Сообщение seaman 07 авг 2012, 12:34

студии, как я понял - глубоко по барабану

Поставьте Resharper - он напомнит. Чрезвычайно удобная штука.
0.5 он трактует, как double.. Ну зачем вот это? Почему не single (float) ?

Ну фиг его знает. Может на момент написания языка больше был распространен double?
Шарп заставляет очень четко все писать. Исходя из этого было бы логично указывать у любого числа что это за число. Т.е. 0.5d - double, 0.5f - float, 0.5s - int16, 5b - byte, 5i - int, 5s - short, 5ui - uint... Вот это действительно была бы (полная Ж)
нативный eclipse, с которым (опять таки, - на мой взгляд) никакая студия кривоватая не сравнится

В эклипс я работал совсем чуть чуть потому четко сказать не могу чем она так хороша - не заметил. Мне так показалось что все - дело привычки.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: 1 или 1f ?

Сообщение Syberex 07 авг 2012, 13:16

Полностью согласен с Woolf-ом :ymapplause: , в с# все, что логично и привычно было в других языках - перевернули ... Причина простая - мелкософт никогда не сделает "как другие", они сделают "лучше" (полная Ж)

В с# я пришел после явы :) , поэтому мне тоже ява айс, а с# не...

Все эти f и d - надуманная лишняя ручная работа - загромождает код, снижает читабельность...
Большая буква в методах - перевернутый принцип ява, что испортить жизнь ява-прогерамм X( (монодевелоп - говорит ошибка, когда переименовываешь метод/переменную и блокирует кнопку ОК =)) )
"Банальное выражение" float a=10/3 с инт результатом - бред полнейший ...

Работал в эклипс - в восторге! Сейчас работаю в монодевелопе, специально, чтобы не привыкать к плохому B-)
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: 1 или 1f ?

Сообщение seaman 07 авг 2012, 13:37

монодевелоп - говорит ошибка

Моно делали не мелкософтовцы.
специально, чтобы не привыкать к плохому

Похоже Вы перевернули все с ног на голову - Вы наоборот привыкаете к плохому. Поработайте в VS + Resharper, потом скажете что плохо - Моно или они.
что логично и привычно было в других языках

Языков сотни, если не тысячи и все они разные. Поизучайте, например Forth, потом будете говорить что и кто переворачивает с ног на голову.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: 1 или 1f ?

Сообщение Woolf 07 авг 2012, 18:01

да только вот толку холиварить )) Все равно никто ничего не исправит, будем кушать что есть ))

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


Чем вам уже форт не угодил-то? Хороший язык, я писал на нем лабы когда-то ))
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: 1 или 1f ?

Сообщение seaman 07 авг 2012, 19:05

Чем вам уже форт не угодил-то? Хороший язык

А я что - против? Мне он очень нравится. Просто в нем не так как Вы хотите:
что логично и привычно было в других языках

Что уж точно - не привычно. Одна польская запись что стоит.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: 1 или 1f ?

Сообщение Tolking 08 авг 2012, 01:03

Паскаля на вас нет... :)
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: 1 или 1f ?

Сообщение trololoid 08 авг 2012, 01:27

Таблетка 1С и нет больше программиста..
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия

Re: 1 или 1f ?

Сообщение Woolf 08 авг 2012, 02:01

Tolking писал(а):Паскаля на вас нет... :)


А что паскаль? Он, по крайней мере, логичен. А к begin/end привыкнуть можно, хотя признаю, что скобочки читабельней.Я на дельфи писал наверное лет 10. Да и сейчас приходится.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: 1 или 1f ?

Сообщение Syberex 08 авг 2012, 06:49

seaman писал(а):Моно делали не мелкософтовцы.

Я не о том, а вот в продолжение этого:
Woolf писал(а):Я уж молчу про "стиль кода"... Если эклипс "напоминал", что переменные принято называть с маленькой, а классы с большой (это не ошибка - нет! это просто вот такой правильный ворнинг), то студии, как я понял - глубоко по барабану.

В этом плане моно пошел дальше и диктует правила :)

seaman писал(а):Похоже Вы перевернули все с ног на голову - Вы наоборот привыкаете к плохому. Поработайте в VS + Resharper, потом скажете что плохо - Моно или они.

Сначала привыкнуть, а потом платить? Уж лучше привыкнуть к моно и не платить :|
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: 1 или 1f ?

Сообщение Tolking 08 авг 2012, 18:06

Woolf писал(а):
Tolking писал(а):Паскаля на вас нет... :)


А что паскаль? Он, по крайней мере, логичен. А к begin/end привыкнуть можно, хотя признаю, что скобочки читабельней.Я на дельфи писал наверное лет 10. Да и сейчас приходится.

Мне бегин/енд читабельнее, а вот в сравнении с определением всех переменных и типов перед программой все ваши жалобы забавны. :)
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: 1 или 1f ?

Сообщение jetyb 10 авг 2012, 06:32

Добавить  в Skype
Или какой даун выбрал double по умолчанию?

С double проще работать в аналитических задачах со сложными вычислениями. Точность float довольно ограничена, а работая с double о погрешностях можно и не думать. К тому же в новом поколении 64-битных операционных систем, за которым будущее, операции над этими типами данных происходят одинаково быстро.

Правда в unity приходится предпочитать float, т.к. видеокарта заточена под этот тип, но ведь C# создавали не только для работы с графикой.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: 1 или 1f ?

Сообщение Woolf 10 авг 2012, 17:16

Поставил решарпер. Интересная штука, но пара вещей меня выбешивает ))

Вот основное:

Синтаксис:
Используется csharp
Weapon wpn=new Weapon();


предлагает заменить на
Синтаксис:
Используется csharp
var wpn=new Weapon();


Учитывая, что я сторонник жесткой типизации, как мне эту байду отключить-то? Вот поотключал что-то, оно все равно просит use var

Изображение
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Пред.След.

Вернуться в Оптимизация

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3