| 4906 | }; |
| 4907 | |
| 4908 | function nfCoreScalar(value, plus, minus, leftDigits, rightDigits, group) { |
| 4909 | var sign = (value < 0) ? minus : plus; |
| 4910 | var autoDetectDecimals = rightDigits === 0; |
| 4911 | var rightDigitsOfDefault = (rightDigits === undef || rightDigits < 0) ? 0 : rightDigits; |
| 4912 | |
| 4913 | |
| 4914 | // Change the way the number is 'floored' based on whether it is odd or even. |
| 4915 | if (rightDigits < 0 && Math.floor(value) % 2 === 1) { |
| 4916 | // Make sure 1.49 rounds to 1, but 1.5 rounds to 2. |
| 4917 | if ((value - Math.floor(value)) >= 0.5) { |
| 4918 | value += 1; |
| 4919 | } |
| 4920 | } |
| 4921 | |
| 4922 | |
| 4923 | var absValue = Math.abs(value); |
| 4924 | if(autoDetectDecimals) { |
| 4925 | rightDigitsOfDefault = 1; |
| 4926 | absValue *= 10; |
| 4927 | while(Math.abs(Math.round(absValue) - absValue) > 1e-6 && rightDigitsOfDefault < 7) { |
| 4928 | ++rightDigitsOfDefault; |
| 4929 | absValue *= 10; |
| 4930 | } |
| 4931 | } else if (rightDigitsOfDefault !== 0) { |
| 4932 | absValue *= Math.pow(10, rightDigitsOfDefault); |
| 4933 | } |
| 4934 | |
| 4935 | var number = Math.round(absValue); |
| 4936 | var buffer = ""; |
| 4937 | var totalDigits = leftDigits + rightDigitsOfDefault; |
| 4938 | while (totalDigits > 0 || number > 0) { |
| 4939 | totalDigits--; |
| 4940 | buffer = "" + (number % 10) + buffer; |
| 4941 | number = Math.floor(number / 10); |
| 4942 | } |
| 4943 | if (group !== undef) { |
| 4944 | var i = buffer.length - 3 - rightDigitsOfDefault; |
| 4945 | while(i > 0) { |
| 4946 | buffer = buffer.substring(0,i) + group + buffer.substring(i); |
| 4947 | i-=3; |
| 4948 | } |
| 4949 | } |
| 4950 | if (rightDigitsOfDefault > 0) { |
| 4951 | return sign + buffer.substring(0, buffer.length - rightDigitsOfDefault) + |
| 4952 | "." + buffer.substring(buffer.length - rightDigitsOfDefault, buffer.length); |
| 4953 | } else { |
| 4954 | return sign + buffer; |
| 4955 | } |
| 4956 | } |
| 4957 | |
| 4958 | function nfCore(value, plus, minus, leftDigits, rightDigits, group) { |
| 4959 | if (value instanceof Array) { |