Принятие Вас может работать к некоторой произвольной, но известной точности (скажите, что одна миллиардная цента), и имеют известное максимальное значение, которое Вы должны обработать (триллион триллионов долларов?) можно записать класс, который хранит то значение как целое число миллиардных частей цента. Вам будут нужны два longs для представления его. Это должно быть, возможно, в десять раз более медленно, чем использующий дважды; приблизительно сто раз с такой скоростью, как BigDecimal.
большинство операций просто выполняет операцию на каждой части и перенормализацию. Подразделение немного более сложно, но не очень.
ответ EDIT:In на комментарий. Необходимо будет реализовать операцию сдвига разряда на классе (легкий как вперед, поскольку множитель для верхнего уровня долго является питанием два). Чтобы сделать подразделение смещает делитель, пока это не не совсем больше, чем дивиденд; вычтите сдвинутый делитель из дивиденда и увеличьте результат (с соответствующим сдвигом). Повториться.
РЕДАКТИРОВАНИЕ AGAIN:You может найти, что BigInteger делает то, в чем Вы нуждаетесь здесь.
Вам нужно вызвать ExitWindowsEx, который доступен только через DllImport
Вы можете использовать WMI для перезапуска. Ниже по памяти, но я думаю, что довольно близко, хотя и немного коряво. :)
var computer = "COMPUTERNAME";
var query = string.Format("SELECT * FROM Win32_OperatingSystem");
ManagementScope scope;
var computerPath = string.Format(@"\\{0}\root\cimv2", computer);
scope = new ManagementScope(computerPath);
scope.Connect();
var q = new ObjectQuery(query);
var s = new ManagementObjectSearcher(scope, q);
ManagementObjectCollection qr;
qr = s.Get();
foreach (ManagementObject r in qr)
{
string[] p = { "" };
r.InvokeMethod("Reboot", p);
}
Не уверен, почему бы вам просто не использовать P / Invoke, но одним из альтернативных способов перезапуска было бы использование System.Diagnostics.Process.Start
в сочетании с выключение
команда.
Пример:
System.Diagnostics.Process.Start("shutdown", "-r");
Если это также неприемлемо, вы можете изучить использование WMI (см. здесь для примера, который, вероятно, может быть изменен в соответствии с вашими целями) .