Как соглашение с тем, что большинство десятичных дробей не может быть точно представлено в двоичном файле?

На самом деле, согласно эта страница MSDN, похоже, что Вы можете вызывать эту функцию многократно для регистрации нескольких сценариев. Просто необходимо использовать различные ключи (второй аргумент).

Page.ClientScript.RegisterStartupScript(
    this.GetType(), key1, function1, true);

Page.ClientScript.RegisterStartupScript(
    this.GetType(), key2, function2, true);

я полагаю, что это должно работать.

5
задан Community 23 May 2017 в 12:07
поделиться

7 ответов

Для всестороннего изучения проблем, связанных с выполнением вычислений с плавающей запятой, см. Эту статью:

Что должен знать каждый компьютерный ученый об арифметике с плавающей запятой http: // docs.sun.com/source/806-3568/ncg_goldberg.html[12116 impression

7
ответ дан 18 December 2019 в 07:30
поделиться

так что же нам делать?

Мы просто продолжаем дышать. На самом деле это не структурная проблема. У нас ограниченная точность, но обычно более чем достаточно. Вам просто нужно помнить о форматировании / округлении при представлении чисел.

Проблема в следующем фрагменте связана с WriteLine () , а не с вычислениями:

double x = 6.9 - 10 * 0.69;
Console.WriteLine("x = {0}", x);

Если у вас есть конкретная проблема, опубликуйте ее. Обычно есть способы предотвратить потерю точности. Если вам действительно нужно> = 30 десятичных цифр, вам понадобится специальная библиотека.

3
ответ дан 18 December 2019 в 07:30
поделиться

О, что нам делать с тем фактом, что большинство десятичных дробей не могут быть представлены в двоичном формате? или, если на то пошло, что двоичные дроби не могут быть представлены в десятичном формате?

или даже, что бесконечность (фактически несчетная бесконечность) действительных чисел во всех основаниях не может быть точно представлена ​​ни в одной компьютеризированной системе ??

ничего! Вспомните старое клише: вы можете подойти достаточно близко для работы с правительством ... На самом деле, вы можете подойти достаточно близко для любой работы ... Нет предела точности, которую может генерировать компьютер, она просто не может быть бесконечной , (это то, что требуется для того, чтобы схема представления чисел могла представлять каждое возможное действительное число)

Видите ли, для каждой схемы представления чисел, которую вы можете разработать на любом компьютере, он может представлять только конечное число различных различных действительных чисел со 100,00% точностью. И между каждой смежной парой этих чисел (тех, которые могут быть представлены со 100% точностью) всегда будет бесконечность других чисел, которые он не может представить со 100% точностью.

4
ответ дан 18 December 2019 в 07:30
поделиться

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

Если вы пишете программное обеспечение для управления ядерным реактором или для моделирования первой миллиардной доли секунды Вселенной после большого взрыва (мой друг на самом деле это сделал) вам потребуется гораздо более высокая точность, чем при расчете налога с продаж (чем я зарабатываю себе на жизнь).

В мире финансов например, будут явные или неявные требования к точности. В некоторых налоговых юрисдикциях США ставка налога указывается с точностью до 5 цифр после запятой. Ваша схема округления должна обеспечивать такую ​​точность. Когда большая часть Западной Европы перешла на евро, существовал очень специфический подход к округлению, который был прописан в законе. В течение этого переходного периода

3
ответ дан 18 December 2019 в 07:30
поделиться

Думаю, все подразумевают: Инвертировать разреженную матрицу? «Для этого есть приложение» и т. Д. И т. Д.

Численные вычисления - это одна хорошо выпоротая лошадь. Если у вас есть проблема, вероятно, он был выведен на пастбище до 1970 года или даже намного раньше, перенесена библиотека за библиотекой или фрагмент за фрагментом в будущее.

2
ответ дан 18 December 2019 в 07:30
поделиться

вы можете сдвинуть десятичную запятую, чтобы числа были целыми, затем выполнить 64-битную целочисленную арифметику, а затем сдвинуть ее обратно. Тогда вам придется беспокоиться только о проблемах с переполнением.

1
ответ дан 18 December 2019 в 07:30
поделиться

И мы знаем, что у нас есть десятичный тип для десятичного представления числа ... но проблема в том, что много математических методов, не поддерживающих десятичный тип, поэтому мы преобразовали их удвоить, что портит число опять таки.

Некоторые из математических методов поддерживают десятичное : Abs , Ceiling , Floor , Макс , Мин , Круглый , Знак и Усечение . Общее у этих функций то, что они возвращают точные результаты. Это соответствует цели десятичной : для выполнения точной арифметики с числами с основанием 10.

Триггерные и Exp / Log / Pow функции возвращают приблизительные ответы, поэтому в чем будет смысл перегрузок для «точного» арифметического типа ?

1
ответ дан 18 December 2019 в 07:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: