LINUX.ORG.RU

atof - "." или ","


0

0

Столкнулся с тем, что atof у меня преобразует "1.1" в 1.0, очевидно из-за локали( "1,1" преобразуется правильно ), а как узнать какой именно разделитель нужен для строки передаваемой atof - "," или "."? можно конечно так:

bool coma = ( atof("1,1") == 1.1 );

но хотелось бы правильно :)

★★★★
Ответ на: комментарий от Deleted

под виндой( msvc ) такое не катит - нет langinfo.h, а мне надо чтоб работало под linux, mac, win, но спасибо - буду знать

lester ★★★★
() автор топика

msdn говорит что под виндой есть localeconv, возвращает указатель на структуру lconv в которой есть поле decimal_point

anonymous
()

imho прощё написать своё. Я для себя так и сделал. Проблемы с локалями в разных системах решаются по-разному, что означает, что эти функции де-факто не стандартизированы. Вторая причина - нет гарантий thread-safety.

anonymous
()
Ответ на: комментарий от anonymous

Свое будет медленнее работать. Гарантии есть если компоновать с правильной либой. К тому же невозможно написать небезопасную atof :)

anonymous
()
Ответ на: комментарий от anonymous

>К тому же невозможно написать небезопасную atof :)

Ты не выёживайся, а пальцем покажи

DIMON ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.