API внешних функций и памяти Java, проблемы с локальюJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 API внешних функций и памяти Java, проблемы с локалью

Сообщение Anonymous »

Коротко говоря, я вызывал нативные Lampps, используя новейший API внешних функций и памяти (Project Panama) в JDK 22.
Я есть проблемы с локалью. будет анализировать 2.2598258677677969 как 2, потому что в моей системе localeconv()->decimal_point действительно имеет значение .
Я пытался установить экспорт терминала LC_ALL=C и добавить сам собственный код.

Код: Выделить всё

#include 
setlocale(LC_ALL, "C");
Но пока никаких успехов у меня не было. К сожалению, я не знаком с родной средой.
Моя ОС — Linux (Ubuntu).
Для воспроизведения:

Код: Выделить всё

val l = Linker.nativeLinker()
val d = FunctionDescriptor.of(ValueLayout.JAVA_DOUBLE, ValueLayout.ADDRESS)
val atof = l.downcallHandle(l.defaultLookup().find("atof").get(), d)
val res = atof.invoke(Arena.global().allocateFrom("2.2598258677677969")) as Double
println(res)
В нативном варианте это:

Код: Выделить всё

    auto a = setlocale(LC_ALL, NULL);
utils::logmesg(this, "old locale {}\n", a);
печатает следующую

старую локаль LC_CTYPE=en_US.UTF-8;LC_NUMERIC=it_IT.UTF-8; LC_TIME=it_IT.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=it_IT.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=it_IT.UTF-8;LC_NAME=it_IT.UTF-8;LC_ADDRESS= it_IT.UTF-8;LC_TELEPHONE=it_IT.UTF-8;LC_MEASUREMENT=it_IT.UTF-8;LC_IDENTIFICATION=it_IT.UTF-8

Код: Выделить всё

locale -a
C
C.utf8
POSIX
de_AT.utf8
de_BE.utf8de_CH.utf8
de_DE.utf8
de_IT.utf8
de_LI.utf8
de_LU.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL
en_IL.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG .utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
it_CH.utf8
it_IT.utf8< /p>


Подробнее здесь: https://stackoverflow.com/questions/787 ... ith-locale
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»