Есть ли способ или команда для увеличения логарифмического?
Так как я могу увеличивать Integer:Логарифмический приращение
int i = 0
while (i < 100)
{
i++
}
результат: 1, 2, 3 ..., 100
До сих пор я это делаю:
double i = 0;
while (i < 100)
{
if (i >= 10)
{
i += 10;
}
else if (i >= 1 & i < 10)
{
i += 1;
}
else if (i >= 0.1 & i < 1)
{
i += 0.1;
}
else if (i < 0.1)
{
i += 0.01;
}
}
результат: 0,1, 0,2, 0,3 ... 1, 2, 3 .... 10, 20, 30 ... 100
При большем диапазоне от 0,001 до 1000 это затрудняет
Второй вопрос:
Если i = 0.05
и I приращение i += 0.01
, то это результат 0.060000000000000005
. Почему он увеличивает 0.010000000000000005
, а не 0.01
?
Ваш второй вопрос связан с арифметикой с плавающей запятой. некоторые десятичные значения не могут быть точно представлены в двоичном формате, так как хранятся 'double' и' float'. – user1666620
Двойное значение имеет до 15 десятичных цифр точности, хотя не более 17 цифр поддерживается внутри. Вместо этого используйте десятичный знак. https://msdn.microsoft.com/en-us/library/system.double%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 – tym32167
Что касается вашего второго вопроса: не используйте 'double' или 'float', но' decimal'. –