У меня есть функция, которую я использую для обработки целых чисел, смешанных дробей (включая символы вульгарной дроби Юникода) и десятичных дробей. Вероятно, нуждается в некоторой полировке, но это работает для моей цели (синтаксический анализ списка ингредиентов).
Входы "2 1/2"
, "2½"
, "2 ½"
и "2.5"
все вернут 2.5
. Примеры:
var numQty = require("numeric-quantity");
numQty("1 1/4") === 1.25; // true
numQty("3 / 4") === 0.75; // true
numQty("¼" ) === 0.25; // true
numQty("2½") === 2.5; // true
numQty("¾") === 0.75; // true
numQty("⅓") === 0.333; // true
numQty("⅔") === 0.667; // true
Одна вещь, которую он не обрабатывает, это десятичные дроби внутри дроби, например, "2.5 / 5"
.