Численно, 4.1 = 4.10, поэтому double.Parse () здесь не ваш друг.
Проблема в том, что вы на самом деле не разбираете число , вы анализируете иерархию , которая использует точечные числа на каждом уровне.
Таким образом, вместо разбора на double
лучше разбирать массив целых чисел . Примерно так:
Array.ConvertAll("4.10".Split('.'), n => int.Parse(n));
Это позволит вам обрабатывать любое количество «уровней» в иерархии и любое количество цифр на каждом уровне.
Если вы хотите сохранить иерархию, скажем, в столбце базы данных, который будет сохранять заданный порядок, просто создайте массив в виде строки , причем левые нули дополняют каждый уровень до числа цифры, с которыми вам удобно.
Если у вас есть только два уровня, вы можете избежать сохранения вашего номера в виде decimal
, но вам все равно нужно будет набирать цифры слева, т.е. хранить 4.1 как число 4.001, 4.10 как 4.01, и т.д.