У меня есть приложение Windows Forms с полем ввода. Я разделяю пользовательский ввод и помещаю его в вектор, затем меняю его на удвоение. После этого я вызываю функцию, которая вычисляет логарифм, но целочисленные значения фиксированной ширины, которые я использую, округляются / обрезаются в приложении Windows Forms (этого не происходит в консоли). Даже если я попытаюсь определить его в самом заголовке форм, он будет обрезан, однако я хочу вывести правильный номер в моем приложении форм, а не только в консольном приложении.
uint16_t log2(uint32_t n) {
if (n == 0) return 0;
uint16_t logValue = -1;
while (n) {
logValue++;
n >>= 1;
}
return logValue;
}
Например, когда я ввожу '10', вывод должен быть 3.3219280948873623478703194294894 (округлено, но вы получаете точку), и оно работает в моем консольном приложении (которое я использую для тестирования всех своих функций), однако, когда я передаю его в свои формы Приложение выводит только 3 (или 0,1,2,4,5,6,7,8 ... без пропущенных десятичных знаков с другим вводом).