#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;
и т.д.?