[Solved] kropka jako separator dziesiętny liczby ?

Jesteś nowy na forum? Przeczytaj ...

Home Fora Forum wsparcia Podstawy [Solved] kropka jako separator dziesiętny liczby ?

  • This topic has 10 odpowiedzi, 2 uczestników, and was last updated 7 years temu by Avatar photomajo.
Oglądasz 11 posty - 1 do 11 (z 11 ogółem)
  • Autor
    Posty
  • #6190
    Avatar photomajo
    Moderator

    Jak ustawić w Manjaro znak kropki, jako separator dziesiętny liczby ?

    Ustawienie w Manjaro ( Ustawienia -> Ustawienia lokalne -> Ustawienia szczegółowe ) w polu Liczby: English, a pozostałych polach: Polski, nie działa, jak powinno, co najmniej w Calc i galkulator.

    Przy powyższych ustawieniach lokalnych Manjaro, calc (na czym przede wszystkim mi zależy) wydaje się być niezależnym od ustawień językowych Manjaro.
    Tylko dodatkowe zaznaczenie w ustawieniach libreoffce ( Narzędzia -> Opcje -> Ustawienia języka -> Języki )
    -> Ustawienia lokalne: Angielski
    -> Klawisz separatora dziesiętnego: zaznaczone „Tak samo jak w ustawieniach lokalnych”
    powoduje, że w calc kropka dziesiętna działa poprawnie w liczbach (choć to ustawienie językowe libreoffice powoduje inne niechciane implikacje).

    Natomiast w Galculator, niezależnie od ustawień językowych Manjaro, zawsze jest przecinek (zarówno pod klawiszem przecinka, jak i kropki).

    Manjaro [stable] LTS, Xfce - tego używam

    #6191
    pavbaranov
    Forumowicz

    To jeszcze poinformuj nas o tym, jakie to środowisko. Tak, czy inaczej – generalnie za tego typu ustawienia odpowiadają ustawienia globalne. W Polsce seperatorem dziesiętnym jest przecinek. Skoro chcesz angielskie, to może:
    LC_ALL=C nazwa_programu
    Program jednak będzie wówczas w wersji angielskiej.

    #6193
    Avatar photomajo
    Moderator

    Środowisko: Xfce.
    Wersja systemu jest polska i taka ma być. Jednak chciałbym zmienić sam separator dziesiętny na kropkę, gdyż przecinek gryzie mi się z wartościami w plikach typu .csv, pochodzących z różnych źródeł, gdzie liczy, rozdzielone przecinkami, są zapisane w postaci 123.45, i te liczby chcę automatycznie przetwarzać w calc.

    Manjaro [stable] LTS, Xfce - tego używam

    #6194
    pavbaranov
    Forumowicz

    LC_ALL=C program spowoduje wyłącznie uruchomienie danego programu w wersji „oryginalnej”, czyli najczęściej angielskiej. Powinieneś mieć też wówczas takie ustawienia lokalizacyjne (chyba, że XFCE inaczej to robi).

    Niemniej jednak – tak się zastanawiam – nie prościej przerobić taki *.csv? Obawiam się, że wszelkie „proste” programy będą korzystać z ustawień systemowych i jeśli w XFCE nie masz możliwości ustawienia jako seperator dziesiętny w języku polskim kropki, to niczego nie wskórasz.

    I jeszcze jedno… „calc” czyli?

    #6195
    Avatar photomajo
    Moderator

    Piszą „calc” miałem na myśli aplikację z pakietu LibreOffice od pracy z arkuszami kalkulacyjnymi ( pełna nazwa: LibreOffice Calc ).

    Nie chcę uruchamiać całego pakietu w angielskiej wersji.

    Przerobić w Calc oczywiście można, z tym że wymagać to będzie trochę nakładu pracy i prawdopodobnie, każdorazowo ręcznej interwencji. Ja natomiast mam w moich arkuszach roboczych odniesienia do PLIK.csv , z liczbami z kropką dziesiętną w środku i przykładowo poniższa formuła Calca daje mi automatyczny dostęp do liczby (z kropką w środku) w kolumnie B (czyli drugiej) i trzecim rzędzie.
    ='file:///KATALOG/PLIK.csv'#$PLIK.B3

    Manjaro [stable] LTS, Xfce - tego używam

    #6196
    pavbaranov
    Forumowicz

    1. Taką ingerencję w csv da się zautomatyzować przez jakiś np. sed, ale i tak wymagałoby to uruchomienia jakiegoś skryptu basha przed wczytaniem do programu.
    2. Sprawdziłem jak to wygląda u mnie (inne środowisko). Otóż w Plasma jestem w stanie ustawić sobie zlokalizowany system i jednocześnie zmienić – ale systemowo – seperator na „anglosaski”. Tyle, że wówczas w całym systemie będzie zapis 123.00 interpretowany jako liczba z seperatorem, zaś zapis 123,00 nie będzie prawidłowo interpretowany.
    3. W LO Calc możesz spróbować zobaczyć co dają zmiany w Narzędzia -> Opcje -> LibreOffice Calc -> Formuła -> Seperatory i/lub Narzędzia -> Opcje -> Języki -> Klawisz seperatora dziesiętnego. Inną opcją mogłoby być ustawienie języka dla danego dokumentu (nie interfejsu, nie w całości, a tylko w danym, konkretnym) na angielski, bo wówczas kropka winna być interpretowana jako seperator.
    To jedynie sugestia, bo nie wiem. Mogę Ci jedynie jeszcze podrzucić, że niegdyś w necie był gość (teksty po Polsku), który opisywał używanie LO i generalnie znał ten pakiet jak swoją własną kieszeń. Mogłbyś się zwrócić do niego bo chłop pomagał (mi też) w rozwiązywaniu problemów. Niestety linka już nie mam – było to jakieś 2-3 komputery/dyski temu :)

    #6197
    Avatar photomajo
    Moderator

    Być może mamy inną wersję LO (u mnie jest libreoffice-still ), ale u mnie nie ma opcji ustawienia klawisza separatora dziesiętnego w ramach Calc (jak w zał.)
    Natomiast ustawienia klawisza separatora dziesiętnego jest możliwe jedynie globalnie, dla całego LO (jak w zał.)

    Pomysł na zmianę ustawień lokalnych języka na angielski tylko dla danego dokumentu bardzo mi się spodobał, ale chyba jest jakiś bug w LO, gdyż zmiana języka z zaznaczeniem opcji „Tylko w bieżącym dokumencie” skutkuje tym, że (po zamknięciu i) ponownym otworzeniu LO wprowadzona wcześniej zmiana jest zapamiętana jako globalna, dla całego LO.

    Mam pewien pomysł jak zrobić automat w ramach formuł Calc’a i jeśli w międzyczasie nikt nie podsunie mi innego rozwiązania, to spróbuję, może wieczorem, to przetestować. Dam znać co mi wyszło.

    Manjaro [stable] LTS, Xfce - tego używam

    #6200
    pavbaranov
    Forumowicz

    Man fresh, ale zrzuty ekranu są dokładnie takie same – tu nic się nie zmieniło.
    Z tym „język dokumentu”, to jest tak, że o ile wiem (durnie to działa), wpierw musisz otworzyć dokument (nie pusty), ustawić i już potem dla niego będzie to ustawione. Dla nowego dokumentu jak ustawisz (pustego), to skutkuje właśnie otwarciem nowego „pustego” z ustawieniami zmienionymi, co wygląda jak globalnie.
    Nigdy sobie z tym nie potrafiłem poradzić. Wiem tylko, że plik ODF musi mieć zadeklarowany inny język. Wówczas to gra.

    #6201
    Avatar photomajo
    Moderator

    OK. Udało się. Zrobiłem automat na bazie formuł Calc’a.
    Użyłem funkcji WARTOŚĆ.LICZBOWA("123.45";".") , tworzącej liczbę na bazie tekstu z separatorem dziesiętnym ".", który może być inny, niż w ustawieniach lokalnych.
    Ponieważ funkcja ta generuje błąd w przypadku, gdy argumentem jest odwołanie do liczby całkowitej(bez kropki) w pliku .csv, dodatkowo użyłem funkcji JEŻELI.BŁĄD, korygującej ten przypadek.
    Automatycznie i poprawnie działająca formuła, pobierająca dane z komórki B3 z PLIK.csv ma teraz postać:
    =JEŻELI.BŁĄD(WARTOŚĆ.LICZBOWA('file:///KATALOG/PLIK.csv'#$PLIK.B3;".");'file:///KATALOG/PLIK.csv'#$PLIK.B3)

    Serdeczne dzięki za inspirującą pomoc :)

    Manjaro [stable] LTS, Xfce - tego używam

    #6248
    pavbaranov
    Forumowicz

    Wiem, że temat zamknięty i rozwiązany, ale właśnie wpadło mi coś w łapy.
    Narzędzia -> Opcje -> Ładuj i Zapisz -> Zgodność z formatem HTML (tak, wiem ;)) i masz tu: Użyj ustawień narodowych Angielski (USA) dla liczb.
    Drugie – w Ustawienia języka jest coś takiego: Zignoruj wprowadzony język systemu. Przez przypadek, czy to ustawienie właśnie nie będzie powodować, że arkusz z „.” jako seperatorem będzie interpretowany „po angielsku”?

    #6251
    Avatar photomajo
    Moderator

    Roboczo ustawiłem, tak jak piszesz, ale nie daje to spodziewanego rezultatu (przynajmniej dla wartości pobranych z pliku .csv ). Przy tych ustawieniach wartość 123.45 ciągle interpretowana jest jako pole tekstowe.
    Dopiero zamiana kropki na przecinek, powoduje, ze Calc widzi tu liczbę 123,45 .

    Rozwiązanie na bazie formuł Calca, które zastosowałem, w zupełności mi odpowiada. Daje dostęp do liczy z plików .csv i jednocześnie zachowuje zgodność formatu liczb w Calcu z innymi polskojęzycznymi pakietami (np. galculator ).

    Manjaro [stable] LTS, Xfce - tego używam

Oglądasz 11 posty - 1 do 11 (z 11 ogółem)
  • Musisz być zalogowany aby odpowiedzieć w tym wątku.