Есть ли библиотека, которая может конвертировать унции в чашки?

#units-of-measurement

#единицы измерения

Вопрос:

В идеале я мог бы указать что-то вроде 10 в качестве входных данных (в унциях) и получить обратно строку, подобную этой: «1 и 1/4 чашки». Есть ли библиотека, которая может делать что-то подобное? (примечание: Я полностью согласен с округлением, подразумеваемым в чем-то подобном этому).

Примечание: Я бы предпочел библиотеку C, но меня устраивают решения практически для любого языка, поскольку я, вероятно, смогу найти подходящие привязки.

Комментарии:

1. Я бы определенно подумал о том, чтобы запросить конкретный язык программирования…….

2. Это действительно так сложно, что вам нужна внешняя библиотека? Я имею в виду, все, что вы делаете, это делите на восемь…

Ответ №1:

На самом деле это две вещи: 1) данные, охватывающие преобразование, 2) представление преобразования.

Второй — это выбор пользователя: если вам нужны дроби, вам нужно написать или получить библиотеку дробей. Их много.

Первое довольно простое. Подавляющее большинство преобразований — это просто фактор. Обычно вы организуете известные коэффициенты для преобразования в соответствующую единицу СИ для такого типа преобразования (объем, длина, площадь, плотность и т.д.)

Тогда ваши данные будут выглядеть примерно так:

 A   acres   4.046870000000000E 03   6
A   ares    1.000000000000000E 02   15
A   barns   1.000000000000000E-28   15
A   centiares   1.000000000000000E 00   15
A   darcys  9.869230000000000E-13   6
A   doors   9.290340000000000E 24   6
A   ferrados    7.168458781362010E-01   6
A   hectares    1.000000000000000E 04   15
A   labors  7.168625518000000E 05   6
A   Rhode Island    3.144260000000000E 09   4
A   sections    2.590000000000000E 06   6
A   sheds   1.000000000000000E-48   15
A   square centimeters  1.000000000000000E-04   15
A   square chains (Gunter's or surveyor's)  4.046860000000000E 02   6
A   square chains (Ramsden's)   9.290304000000000E 02   5
A   square feet 9.290340000000000E-02   6
A   square inches   6.451600000000000E-04   15
A   square kilometers   1.000000000000000E 06   15
A   square links (Gunter's or surveyor's)   4.046900000000000E-02   5
A   square meters (SI)  1.000000000000000E 00   15
A   square miles (statute)  2.590000000000000E 06   7
A   square millimeter   1.000000000000000E-06   15
A   square mils 6.451610000000000E-10   5
A   square perches  2.529300000000000E 01   5
A   square poles    2.529300000000000E 01   5
A   square rods 2.529300000000000E 01   5
A   square yards    8.361270000000000E-01   6
A   townships   9.324009324009320E 07   5
  

В каждом случае это преобразование площади в единицу СИ для обозначения площади — квадратные метры. Затем выполните второе преобразование в желаемое преобразование. Третье число там состоит из значащих цифр.

Сохраните файл с этими значениями для желаемых коэффициентов, а затем вы сможете конвертировать из любой области в любую область, по которой у вас есть данные. Повторите для других категорий преобразования (объем, мощность, длина, вес и т.д. и т.п.)

Ответ №2:

Я думал использовать Google Calculator для этой задачи, если вам нужны общие преобразования…

Пример: http://www.google.com/ig/calculator?q=10 ounces to cups — возвращает JSON, но я полагаю, вы можете указать формат.

Вот пример Java для конвертации валюты: http://blog.caplin.com/2011/01/06/simple-currency-conversion-using-google-calculator-and-java /

Ответ №3:

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

Ответ №4:

Пожалуйста, ознакомьтесь с JSR 363, стандартом единиц измерения для Java: http://unitsofmeasurement.github.io /

По крайней мере, в C вы уже получаете базовую поддержку через «типы значений», но вам все равно придется реализовать эти преобразования самостоятельно или найти подходящую библиотеку, подобную той, что предлагает JSR 363 для Java.