Я копался в MSCoreLib и наткнулся на кое-что интересное.
Я смущен, как это вообще работает.
(ссылка http://referencesource.microsoft.com/#mscorlib/system/math.cs строка 32)
// This table is required for the Round function which can specify the number of digits to round to
private static double[] roundPower10Double = new double[] {
1E0, 1E1, 1E2, 1E3, 1E4, 1E5, 1E6, 1E7, 1E8,
1E9, 1E10, 1E11, 1E12, 1E13, 1E14, 1E15
};
public const double E = 2.7182818284590452354;
Похоже, они создают двойной массив. Затем для каждого значения умножается на 1 * E * nth
. Это то, что КАЖЕТСЯ происходит, но они не используют никаких операторов?
Что это за темная магия?
var myDouble = 1e3
. В основном это означает (e — сокращение от экспоненты):1 * 10 ^ 3
. - person   schedule 05.08.2014E
. НоE
в массиве не является именем этой константы. Это буквальное обозначение означаетx 10 ^
. Поскольку это литерал, это также не умножение. Он напрямую компилируется в определенное число. - person chiccodoro   schedule 05.08.2014e
с const decalared в исходном коде, который вы вставили. Есть две отдельные вещи. - person   schedule 05.08.2014public const
ввели меня в заблуждение :) - person sasjaq   schedule 05.08.2014