LINUX.ORG.RU

Языки с десятичной запятой

 , ,


0

0

Какие существуют языки, в которых десятичный разделитель представлен запятой? Я знаю только о языке формул Excel/LO Calc, который принимает десятичный разделитель локализации.

А другие когда-либо существовали?

В нормальном языке программирования это настраивается:

package hello;

import java.text.NumberFormat;
import java.util.Locale;

public class Test {
    
    public static void main(String[] args) throws Exception {
        
        String text = "2,71828";
        
        NumberFormat nf = NumberFormat.getNumberInstance(Locale.FRANCE);
        nf.setMaximumFractionDigits(5);
        double val = nf.parse(text).doubleValue();
        String s = nf.format(val);
        System.out.println(s);
        
        nf = NumberFormat.getNumberInstance(Locale.UK);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
        
        text = "2.71828";
        
        nf = NumberFormat.getNumberInstance(Locale.FRANCE);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
        
        nf = NumberFormat.getNumberInstance(Locale.UK);
        nf.setMaximumFractionDigits(5);
        val = nf.parse(text).doubleValue();
        s = nf.format(val);
        System.out.println(s);
    }
}

// 2,71828
// 271,828
// 2
// 2.71828

Можно настроить через _любой_ символ, какой пожелаете:

         String text = "2_71828";
        
        DecimalFormatSymbols dfs= new DecimalFormatSymbols(Locale.US);
        dfs.setDecimalSeparator('_');
        dfs.setGroupingSeparator('/'); 
        DecimalFormat df = new DecimalFormat("0.#", dfs);
        
        df.setMaximumFractionDigits(5);
        double val = df.parse(text).doubleValue();
        System.out.println(val);
        String s = df.format(val);
        System.out.println(s);
        
        // 2.71828
        // 2_71828

Можете даже преобразовывать форматы в «двуязычной» стране

package hello;

import java.text.NumberFormat;
import java.util.Locale;

public class TestCanadian {
    
    public static void main(String[] args) throws Exception {
        
        String text = "2,71828";
        
        NumberFormat nf_in = NumberFormat.getNumberInstance(Locale.CANADA_FRENCH);
        nf_in.setMaximumFractionDigits(5);
        double val = nf_in.parse(text).doubleValue();
        String s = nf_in.format(val);
        System.out.println(s);

        NumberFormat nf_out = NumberFormat.getNumberInstance(Locale.CANADA);
        nf_out.setMaximumFractionDigits(5);
        s = nf_out.format(val);
        System.out.println(s);
    }
}

// 2,71828
// 2.71828
Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 2)
Ответ на: комментарий от Bioreactor

В строке можно хоть римскими цифрами задавать числа. Вопрос же про язык, который использует запятую в синтаксисе. Ведь в вышепредставленном языке в исходниках будет использоваться традиционная точка.

gedisdone ★★★
() автор топика
Ответ на: комментарий от gedisdone

Фокал-1б, который был у меня на

http://www.computer-museum.ru/images/soviet-pk/soviet_pk_15_b.jpg

И то в перепрошивке вернулись к _точке_, как и принято во всём мире.

А в современных языках программирования такой «исконности-посконности»(C) нет - так, что повышайте свой «порог вхождения» в языки программирования.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от gedisdone

Я знаю только о языке формул Excel/LO Calc

В строке можно хоть римскими цифрами задавать числа. Вопрос же про язык, который использует запятую в синтаксисе.

Так в экселе они по сути тоже строки. По крайней мере если открыть файл xlsx как XML, числа записаны там строками а разделитель можно прописать специальным тегом.

cPunk ★★
()

قلب (alb).

>>> (جمع ١١،٢٢ ١١،٢٢)
==> ٢٢،٤٤
monk ★★★★★
()

Какие существуют языки, в которых десятичный разделитель представлен запятой?

А зачем?

crutch_master ★★★★★
()

А язык формул excel является языком?
Тогда в ориджине тоже можно!

Deleted
()

десятичный разделитель представлен запятой?

Лучше пусть подскажут, как в gnumeric эту грё..нную локализацию устранить, не трогая системы.

anonymous
()

Думал, что в 1С так. Но там, как оказалось, даже математические функции пишутся латиницей. То есть, клавиатуру программиста 1С легко опознать по западающим клавишам alt и shift.

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

LANG=C gnumeric, не?

Что значит нет. Конечно же да. Прост я думал, мож в настройках чего проглядел? Ну а так то да, этим собстно и пользуюсь, просто набивать надоело.

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

А что в gnumeric.desktop (или как его там) если вписать, не заработает?

Заработает. Но смысл. Это моё нытьё, по поводу «набивания», просто выхлом раздражения. И связан он с тем, что по работе приходится эти таблицы в offtop-е открывать иногда. А вот как offtop-у объяснить, что он сволочь последняяне должен пользовать локализацию, я не в курсе.

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

«Доктор, я всадил себе в ногу всю обойму, и три пули застряли. Как вытащить среднюю, не трогая остальные?»

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

А а баш-алиасах катит переменная окружения префиксом?

anonymous
()

Ну, если упарываться веществами, то можно для любого языка добавить дополнительный шаг трансляции с твоего синтаксиса с запятыми в сборку.

А во время этого шага твой особый синтаксис с запятыми переделывать на точки.

При этом будут, естественно, неоднозначности, т.к. в оригинальном языке запятые тоже используются.

Ну и будут проблемы с отладкой. Хотя, с компилируемыми языками, если заморочиться и разобраться с механизмами добавления в бинарные форматы отладочной информации, можно победить. В JS тоже есть source map.

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

Перечитайте мой ответ четыре раза.

В самом языке нет замены десятичной точки на «десятичную запятую».

Ибо даже в Excel - число с «десятичной запятой» - это _строка_.

Учите матчасть.

В жизни пригодится.

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

Учите матчасть. В жизни пригодится.

В загробной жизни?

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

Юноша, не грубите, речь про ЯП, а не про строки. Если так не понятно, что скажу иначе - «в каком ЯП есть синтаксический сахар, чтобы писать float различными способами»? об этом вопрос, а не про принтование, ибо это уже не про язык, а про реализацию библиотеки локализации. Во всяком случае, так звучит вопрос. Если ТС имеет ввиду что-то иное, пусть явится сюда и уточнит

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Дедушка, в ЯП «синтаксического сахара, чтобы писать float различными способами»(С) нет.

Есть текстовые строки для представления чисел с плавающей точкой, запятой или любым другим знаком и API для работы с ними.

Даже в СССР этого не было - курите ГОСТ 2.004-88.

-------

Для адекватных.

Исторический экскурс.

При стандартизации «Алгола» разыгралась т.н. «десятичная буря»(ТМ), когда представители одних стран требовали стандартизировать «десятичную точку», а другие «десятичную запятую» -

https://habr.com/ru/post/317010/

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от Deleted

Дядя, читайте ГОСТы.

А потом снова на ЛОР вылезайте - людей смешить.

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