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, 1 months temu by majo.
- AutorPosty
- 24 października 2017 o 16:26 #6190majoModerator
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
24 października 2017 o 18:10 #6191pavbaranovForumowiczTo 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.24 października 2017 o 18:48 #6193majoModeratorŚ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 postaci123.45
, i te liczby chcę automatycznie przetwarzać w calc.Manjaro [stable] LTS, Xfce - tego używam
24 października 2017 o 19:51 #6194pavbaranovForumowiczLC_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?
24 października 2017 o 22:46 #6195majoModeratorPiszą „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
25 października 2017 o 09:19 #6196pavbaranovForumowicz1. 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 :)25 października 2017 o 11:45 #6197majoModeratorByć 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.
Attachments:
Manjaro [stable] LTS, Xfce - tego używam
25 października 2017 o 12:14 #6200pavbaranovForumowiczMan 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.25 października 2017 o 14:03 #6201majoModeratorOK. Udało się. Zrobiłem automat na bazie formuł Calc’a.
Użyłem funkcjiWARTOŚĆ.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 funkcjiJEŻ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
4 listopada 2017 o 13:42 #6248pavbaranovForumowiczWiem, ż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”?4 listopada 2017 o 23:15 #6251majoModeratorRoboczo 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
- AutorPosty
- Musisz być zalogowany aby odpowiedzieć w tym wątku.