- */
- var aParts = a.split(NUMBERS);
- var bParts = b.split(NUMBERS);
- for (var i = 1; i < aParts.length; i += 2) {
- var part = nlerp(+aParts[i], +bParts[i], p);
- if (aParts[i].indexOf(".") === -1 && bParts[i].indexOf(".") === -1)
- part = Math.round(part);
- aParts[i] = part.toString();
+ */
+
+ var sourceParts = source.split(NUMBERS);
+ var targetParts = target.split(NUMBERS);
+ var destParts = targetParts;
+ for (var i = 1; i < sourceParts.length; i += 2) {
+ var sourcePart = sourceParts[i];
+ var targetPart = targetParts[i];
+ var part = nlerp(+sourcePart, +targetPart, amount);
+ var sourcePoint = sourcePart.indexOf(".");
+ var targetPoint = targetPart.indexOf(".");
+ var point = Math.round(nlerp(
+ sourcePoint >= 0 ? (sourcePart.length - 1) - sourcePoint : 0,
+ targetPoint >= 0 ? (targetPart.length - 1) - targetPoint : 0,
+ amount));
+ targetParts[i] = part.toFixed(point);