atof, strtod и локаль.
Jan. 22nd, 2012 10:36 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Внезапно: а вот как положено в коде на С конвертить строку в double, если мы точно знаем, что в строке десятичный разделитель ".", и точно знаем, что код будут запускать на системе с адовыми локалями, у которых разделитель "," типа русской, белорусской итд?
В дотнете, как положено, есть функция с параметром для локали и инвариантная локаль InvariantCulture.
А в олдскульно-кошерном C как?
setlocale(LC_NUMERIC,"C"); чо-то не рекомендуют, говорят, не thread-safe.
no subject
Date: 2012-01-22 07:39 pm (UTC)no subject
Date: 2012-01-22 07:41 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2012-01-22 07:45 pm (UTC)no subject
Date: 2012-01-22 08:06 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-01-22 07:46 pm (UTC)--
xaep
no subject
Date: 2012-01-23 06:24 am (UTC)no subject
Date: 2012-01-22 08:13 pm (UTC)no subject
Date: 2012-01-22 08:21 pm (UTC)(no subject)
From:no subject
Date: 2012-01-22 08:28 pm (UTC)все работает, как положено, выдает 1.2 и 1,2
(no subject)
From:no subject
Date: 2012-01-22 08:31 pm (UTC)--
xaep
no subject
Date: 2012-01-22 09:14 pm (UTC)no subject
Date: 2012-01-22 09:23 pm (UTC)(no subject)
From:no subject
Date: 2012-01-22 09:35 pm (UTC)2) Мнение, что разделителем можэт быть запятая -- это ересь, посему setlocale(LC_NUMERIC, "C")
3) char *dot;
if ((dot = strchr(s, '.'))) {
*dot = *nl_langinfo(RADIXCHAR);
}
no subject
Date: 2012-01-22 09:39 pm (UTC)Расскажите.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-01-22 10:28 pm (UTC)no subject
Date: 2012-01-22 10:36 pm (UTC)no subject
Date: 2012-01-22 11:25 pm (UTC)no subject
Date: 2012-01-23 12:39 am (UTC)no subject
Date: 2012-01-23 02:40 am (UTC)no subject
Date: 2012-01-23 05:01 am (UTC)Соответственно, решение может быть такое:
а) не указывать локаль, а в си само не подхватится.
б) указать явно какую-нибудь адекватную в самом начале программы.
no subject
Date: 2012-01-23 05:45 am (UTC)Синглтон, фигле.
no subject
Date: 2012-01-23 07:01 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-01-23 08:58 am (UTC)no subject
Date: 2012-01-23 07:12 am (UTC)no subject
Date: 2012-01-23 07:26 am (UTC)И почему в Вашей стране тангенс называется tg, хотя во всём остальном мире он tan?
(no subject)
From: