C # и — увеличение двойной переменной на 0,1

#c# #.net

#c# #.net

Вопрос:

прошу прощения, если об этом спрашивали, но я не могу его найти.

У меня есть двойная переменная, которую я делаю и — для увеличения и уменьшения значения.

Например, мое число равно 95,8, а значение равнялось бы 96,8

Но я бы хотел, чтобы оператор каждый раз увеличивал значение на 0,1, поэтому число увеличивалось бы, например, до 95,9.

Спасибо, Дэн

Комментарии:

1. почему вы не используете оператор =?

2. Вам не кажется, что это может сбить с толку других, которые будут ожидать другого поведения? Что не так с «myDouble = 0,1;»?

3. Кстати, обратите внимание, что увеличение на 0,1 каждый раз может привести к ошибкам с плавающей запятой (поскольку 0,1 не может быть представлено как точное число в двоичном формате с плавающей запятой). Рассмотрите возможность представления числа в виде целого числа, например, 958 и 959 в вашем примере, а затем деления на 10 при отображении.

4. Привет, Крис, я использую double, поскольку это то, что требуется для загрузки элемента управления. Приветствия.

Ответ №1:

Это не поддерживается, если вы не создадите свой собственный тип (класс) и не переопределите эти операторы.

Вместо этого используйте следующее:

 x  = 0.1;
  

Комментарии:

1. Я бы без зазрения совести придушил человека, который перегружает оператор для увеличения на что-то отличное от 1 для числового типа.

2. @Mike: Да, здесь то же самое. Тем более, что уже существует синтаксис, позволяющий сделать это ясным и сжатым способом.

3. Отлично, Джонатан, я раньше не использовал оператор =. Это так просто, что я упустил это из виду 😉

Ответ №2:

По определению, операторы и -- проходят мимо 1 .

Вы могли бы создать класс с нужной вам семантикой, но вы поставите в тупик будущих читателей вашего кода.

Зачем бороться с системой? Почему бы просто не сказать x = 0.1; и т.д.?