Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Abu Antos' ([info]syarzhuk)
@ 2009-01-22 14:06:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:code

Хозяйке на заметку
Прошло 52 года с создания транслятора формул, более известного как FORTRAN. Однако даже в наши дни
великий и могучий дотнет не умеет по умолчанию парсить экспоненты. Лечится, правда, тривиально:
вместо decimal.TryParse(Value, out decValue) надо добавлять немного шаманских заклинаний и писать decimal.TryParse(Value, Globalization.NumberStyles.Float, Globalization.CultureInfo.CurrentCulture, out decValue)



(Добавить комментарий)


[info]spamsink
2009-01-22 23:55 (ссылка)
Что значит "парсить экспоненты"? Числа в записи "мантиссаЕэкспонента"?

(Ответить) (Ветвь дискуссии)


[info]syarzhuk
2009-01-23 00:18 (ссылка)
ага

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]spamsink
2009-01-23 01:03 (ссылка)
Какие бывают локальные варианты, кроме десятичной точки/запятой?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]syarzhuk
2009-01-23 01:11 (ссылка)
http://msdn.microsoft.com/en-us/library/system.globalization.numberstyles.aspx
AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign, AllowTrailingSign, AllowParentheses, AllowDecimalPoint, AllowThousands, AllowExponent, AllowCurrencySymbol, AllowHexSpecifier

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx
Currency format. Associated properties are:
CurrencyDecimalDigits, CurrencyDecimalSeparator, CurrencyGroupSeparator, CurrencyGroupSizes, CurrencyNegativePattern, CurrencyPositivePattern, CurrencySymbol.

Number format. Associated properties are:
NumberDecimalDigits, NumberDecimalSeparator, NumberGroupSeparator, NumberGroupSizes, NumberNegativePattern.

Percent format. Associated properties are:
PercentDecimalDigits, PercentDecimalSeparator, PercentGroupSeparator, PercentGroupSizes, PercentNegativePattern, PercentPositivePattern, PercentSymbol.

Ну и до кучи
http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo_members.aspx

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]spamsink
2009-01-23 01:33 (ссылка)
Если выбран стиль AllowExponent, то вариантов не так уж много:

The AllowExponent style is used for numeric strings in one of the following forms:
[-] m. dddddd E+ xx
[-] m. dddddd E- xx
[-] m. dddddd e+ xx
[-] m. dddddd e- xx

One or more nonzero digits (m) precede the decimal separator ("."). A minus sign ("-") can precede m. The Type performing the conversion determines the number of decimal places (dddddd) in the string, and maximum and minimum values for xx and m. The exponent (+ / - xx) consists of either a plus or minus sign followed by at least one digit.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]syarzhuk
2009-01-23 15:51 (ссылка)
And your point is?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]spamsink
2009-01-23 19:11 (ссылка)
Не так страшен черт, как его малюют.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]syarzhuk
2009-01-23 19:32 (ссылка)
Не страшно, конечно, просто удивительно, что TryParse по умолчанию не знает нотации, которая применяется уже больше полувека

(Ответить) (Уровень выше)


[info]beshenov
2009-01-23 00:09 (ссылка)
А что это за фигня такая? C#?

(Ответить) (Ветвь дискуссии)


[info]syarzhuk
2009-01-23 00:21 (ссылка)
Ага. Причём я-то пишу исключительно на T-SQL, но иногда приходится читать чужой код, написанный на этом (в принципе, неплохом) потомке уёбищного С

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]beshenov
2009-01-23 19:48 (ссылка)
Потомок Java, в принципе.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]syarzhuk
2009-01-23 20:23 (ссылка)
Весь идиотизм (точки с запятой, отсчёт с нуля, case sensitivity, автоматический перевод из любого типа в int) в этих языках идёт от тех аппаратных проблем, которые Ричи обходил в 1972 году. Как раз то, что в C# взяли из Java - неплохо (а то, что написали по новой - ещё лучше)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]beshenov
2009-01-23 20:43 (ссылка)
Ну да, FORTRAN лишен многих подобных особенностей.

(Ответить) (Уровень выше)

why
[info]syarzhuk
2012-07-07 20:14 (ссылка)
Zimbabwe once caused a major problem at a financial company I used to work for. Every morning the data systems were populated with the data feed from the custodial bank (we think we have X shares of Australian company Y worth Z American dollars, but it’s up to the bank to tell us what exactly we have). One of the data files was currency rates. Zimbabwe’s runaway inflation made the rate so large that it won’t fit into a CHAR(10) or whatever length field was used. So the bank changed the rate representation to scientific format (1 Zimbabwe dollar = 1E+14 USD or something like that) and our software didn’t know how to handle it! “Can’t load the currency rates” meant “can’t load custodial information” meant “don’t know where we stand” meant “can’t trade”. The whole company was on standby while the IT folks were deleting the Zimbabwe line and reloading the data! Of course later that same day I fixed the ETL software to handle the scientific format.

(Ответить)