Пишу класс для бесконечных чисел с плавающей точкой. Однако, конвертация в строку происходит неправильно. Сам код:
public string ToString(int precision) {
BigInteger remainder;
BigInteger result = BigInteger.DivRem(numerator, denominator, out remainder);
if (remainder == 0)
return result.ToString();
BigInteger decimals = (numerator * BigInteger.Pow(10, precision)) / denominator;
if (decimals == 0)
return result.ToString();
StringBuilder sb = new StringBuilder();
while (precision-- > 0 && decimals > 0) {
sb.Append(decimals % 10);
decimals /= 10;
}
return result + "." + new string(sb.ToString().Reverse().ToArray());
}
Дело в том, что после точки не дописываются нули, так, при делении 3/34 должно быть 0.0882..., но получается 0.882... Проблема, очевидно в этой строке:
BigInteger decimals = (numerator * BigInteger.Pow(10, precision)) / denominator;
Пожалуйста, подскажите как можно узнать сколько нулей должно быть и нормализовать вывод.
Уберите здесь одну проверку, из-за нее не добавляются нужные нули в конце:
while (precision-- > 0 /* && decimals > 0 */) {
sb.Append(decimals % 10);
decimals /= 10;
}
Как узнать если палец двигался и сменил направление то есть двигался в перед а потом начал назад
Допустим есть БД и взаимодействие с ней выполняется через какое-то ORM
Как получить данные выбранной строки DataGrid в MVVM? Если я правильно понимаю, данные выбранной строки DataGrid попадают в SelectedProduct, а оттуда раздаются...