Олег Олегович
Просветленный
(22928)
7 лет назад
//double d = 100;
double d = 100.123456789012;
int i = 0;
while (d * Math.Pow(10, 1 + i) % 10 != 0) { i++; }
Console.WriteLine("У числа {0} {1} знаков после запятой.", d, i--);
f fУченик (64)
7 лет назад
"У числа 1,569975 7 знаков после запятой."
Эх, близко, но не то. Там алгоритм сложнее...
Sergey
Гуру
(2689)
7 лет назад
число дабл содержит 52+1 бит в мантиссе. Это соответствует ~15 десятичным знакам.
Если число цифр после запятой это, число значимых знаков после запятой в виде ХХХХ. YYYY, то это 15 - log10(число).
Сергей Куксенков
Просветленный
(42015)
7 лет назад
double number = 129.12563;
int count = BitConverter.GetBytes(decimal.GetBits((decimal)number)[3])[2];
Console.WriteLine(count); // 5
Как это работает тут: matthewedmondson . info / 2014 / 03 / reliance-on-implementation-details . html