Корректный способ разработать на основе ограничений Windows UAC?

Изящный, Предсказуемый, и Допускающий повторное использование

Позволяют нам иметь дело с проблемой изящным способом допускающий повторное использование путь. Следующие семь строк позволят Вам получить доступ к точности с плавающей точкой, которой Вы требуете на любом числе просто путем добавления .decimal до конца числа, формулы, или созданный в Math функция.

// First extend the native Number object to handle precision. This populates
// the functionality to all math operations.

Object.defineProperty(Number.prototype, "decimal", {
  get: function decimal() {
    Number.precision = "precision" in Number ? Number.precision : 3;
    var f = Math.pow(10, Number.precision);
    return Math.round( this * f ) / f;
  }
});


// Now lets see how it works by adjusting our global precision level and 
// checking our results.

console.log("'1/3 + 1/3 + 1/3 = 1' Right?");
console.log((0.3333 + 0.3333 + 0.3333).decimal == 1); // true

console.log(0.3333.decimal); // 0.333 - A raw 4 digit decimal, trimmed to 3...

Number.precision = 3;
console.log("Precision: 3");
console.log((0.8 + 0.2).decimal); // 1
console.log((0.08 + 0.02).decimal); // 0.1
console.log((0.008 + 0.002).decimal); // 0.01
console.log((0.0008 + 0.0002).decimal); // 0.001

Number.precision = 2;
console.log("Precision: 2");
console.log((0.8 + 0.2).decimal); // 1
console.log((0.08 + 0.02).decimal); // 0.1
console.log((0.008 + 0.002).decimal); // 0.01
console.log((0.0008 + 0.0002).decimal); // 0

Number.precision = 1;
console.log("Precision: 1");
console.log((0.8 + 0.2).decimal); // 1
console.log((0.08 + 0.02).decimal); // 0.1
console.log((0.008 + 0.002).decimal); // 0
console.log((0.0008 + 0.0002).decimal); // 0

Number.precision = 0;
console.log("Precision: 0");
console.log((0.8 + 0.2).decimal); // 1
console.log((0.08 + 0.02).decimal); // 0
console.log((0.008 + 0.002).decimal); // 0
console.log((0.0008 + 0.0002).decimal); // 0

За Ваше здоровье!

7
задан Helen 13 September 2009 в 18:12
поделиться

2 ответа

В папке AppData должны быть записаны данные для отдельных приложений.

Следует использовать SHGetKnownFolderPath с FOLDERID_LocalAppData.

В управляемом коде следует использовать System.Environment.GetFolderPath с System.Environment.SpecialFolder.LocalApplicationData.

12
ответ дан 6 December 2019 в 12:53
поделиться

Да, есть определенные места. Рассмотрите эту статью msdn как первую ссылку. В нем упоминаются местоположения:

  • CSIDL_APPDATA
  • CSIDL_LOCAL_APPDATA
  • CSIDL_COMMON_APPDATA

В собственном коде метод SHGetKnownFolderPath должен оказаться полезным.

В управляемом коде вы можете использовать Environment.GetFolderPath () . Если вы работаете с определенной структурой приложения, например с формами Windows, вы можете получить еще более простой доступ с помощью прямых свойств, таких как Application.LocalUserAppDataPath (это моя любимая техника). Путь к платформе будет включать специфические для приложения квалификаторы на пути, который он возвращает, чтобы различать (например) разные версии вашего приложения.

4
ответ дан 6 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

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