1

I'm trying to make a custom filter in AngularJS, which filter number to Roman numerals like 10 equal to X. But this filter fail to read a number bigger than 10, I'm thinking of a way to split a big number into several single numbers, for example, 11 = 10 + 1

app.filter("myFilter", function () {
return function (myNum) {
    var formatedNumber = "";
    switch (myNum) {
    case 1:
        formatedNumber = "I";
        break;
    case 2:
        formatedNumber = "II";
        break;
    case 3:
        formatedNumber = "III";
        break;
    case 4:
        formatedNumber = "IV";
        break;
    case 5:
        formatedNumber = "V";
        break;
    case 6:
        formatedNumber = "VI";
        break;
    case 7:
        formatedNumber = "VII";
        break;
    case 8:
        formatedNumber = "VIII";
        break;
    case 9:
        formatedNumber = "IX";
        break;
    case 10:
        formatedNumber = "X";
        break;
    case myNum > 10:
        formatedNumber = "";
        break;
    }
    return formatedNumber;
};
});
Joey Zhang
  • 363
  • 6
  • 18
  • What's the biggest number that you would want to handle? Also, if you want the answer spoiled for you, why don't you just Google the algorithm? It's been done many times before. – 4castle Apr 17 '16 at 22:11
  • [Spoilers here](http://stackoverflow.com/q/9083037/5743988) – 4castle Apr 17 '16 at 22:17
  • You are right. It become much easier after I googled the algorithm. – Joey Zhang Apr 17 '16 at 22:52

1 Answers1

0

Divide by your biggest number. The quotient will be how many of the largest number number you use and the remainder will be the other numbers. In your example, 11 / 10 = 1.1. So you know you need 1 X and 1 I. For another example, let's use 379. 379 / 10 = 37.9. This means you will have 37 Xs and an IX.

keithbhunter
  • 12,258
  • 4
  • 33
  • 58