コードの内容とダウンロード アドレス
accounting.js コードは次のとおりです:
/*!
* Accounting.js v0.3.2
* Copyright 2011, Joss Crowcroft
*
* MIT 라이센스에 따라 자유롭게 배포 가능.
* 회계.js의 일부는 underscore.js에서 영감을 얻었거나 차용했습니다.
*
* 전체 세부 정보 및 문서:
* http://josscrowcroft.github.com/accounting.js/
*/
(function(root, undefine) {
/* --- 설정 --- */
// 나중에 전역적으로 내보내거나 참조할 로컬 라이브러리 개체를 만듭니다.
var lib = {};// 현재 버전
lib.version = '0.3.2';
/* --- 노출된 설정 --- */
// 라이브러리의 설정 구성 개체 .
// 통화 및 숫자 형식에 대한 기본 매개변수가 포함되어 있습니다.
lib.settings = {
currency: {
symbol : "$", // 기본 통화 기호는 '$'입니다.
format : "%s%v", // 출력 제어: %s = 기호, %v = 값(객체일 수 있음, 문서 참조)
decimal : ".", // 소수점 구분 기호
thousand : " ,", // 천 단위 구분 기호
정밀도 : 2, // 소수점 자리
그룹화 : 3 // 자릿수 그룹화(아직 구현되지 않음)
},
숫자: {
정밀도 : 0 , // 숫자의 기본 정밀도는 0
그룹화 : 3, // 숫자 그룹화(아직 구현되지 않음)
thousand : ",",
decimal :
}
} ;
/* --- 내부 도우미 메서드 --- */
// 나중에 사용할 수 있는 ECMAScript 5 메서드에 대한 참조 저장
var NativeMap = Array.prototype.map,
nativeIsArray = Array .isArray,
toString = Object.prototype.toString;
/**
* 제공된 매개변수가 문자열인지 테스트합니다.
* underscore.js
*/
function isString(obj) {
return !!(obj === '' || (obj && obj.charCodeAt && obj.substr));
}
/**
* 제공된 매개변수가 underscore.js의 문자열
*인지 테스트하고 ECMA5의 기본 Array.isArray
에 위임합니다.*/
function isArray(obj) {
return NativeIsArray ? NativeIsArray(obj) : toString.call(obj) === '[객체 배열]';
}
/**
* 제공된 매개변수가 실제 객체인지 테스트합니다.
*/
function isObject(obj) {
return obj && toString.call(obj) === '[object Object]';
}
/**
* 밑줄의 _.defaults와 유사한 기본 개체로 개체를 확장합니다.
*
* API 메서드에서 매개변수 처리를 추상화하는 데 사용됩니다.
*/
function defaults(object, defs) {
var key;
객체 = 객체 || {};
defs = defs || {};
// 프로토타입이 아닌 객체 속성에 대해 반복:
for (key in defs) {
if (defs.hasOwnProperty(key)) {
// 정의되지 않은 경우에만 값을 기본값으로 바꿉니다(허용 비어 있음/0 값):
if (object[key] == null) object[key] = defs[key];
}
}
객체 반환;
}
/**
* 반복 루프를 위한 `Array.map()` 구현
*
* 각 배열 값에 대해 `iterator`를 호출한 결과로 새 배열을 반환합니다.
* 가능한 경우 기본 Array.map으로 연기
*/
function map(obj, iterator, context) {
var results = [], i, j;
if(!obj)가 결과를 반환합니다.
// 존재하는 경우 기본 .map 메서드를 사용합니다.
if (nativeMap && obj.map === NativeMap) return obj.map(iterator, context);
// 네이티브 .map에 대한 대체:
for (i = 0, j = obj.length; i results[i] = iterator.call(context, obj[ i], i, obj);
}
결과 반환;
}
/**
* 정밀도 값을 확인하고 정규화합니다(양의 정수여야 함)
*/
function checkPrecision(val, base) {
val = Math.round(Math.abs(val));
반환은 NaN(val)입니까? 베이스 : 발;
}
/**
* 형식 문자열 또는 객체를 구문 분석하고 렌더링에 사용할 형식 obj를 반환합니다.
*
* `format`은 기본(양수) 형식의 문자열이거나 `pos를 포함하는 객체
*입니다. `(필수), `neg` 및 `zero` 값(또는
* 문자열이나 객체를 반환하는 함수)
*
* string 또는 format.pos 중 하나에 "%v"(값 ) 유효
*/
function checkCurrencyFormat(format) {
var defaults = lib.settings.currency.format;
// 형식 매개변수로 함수 허용(문자열 또는 객체를 반환해야 함):
if ( typeof format === "function" ) format = format();
// 형식은 문자열일 수 있으며, 이 경우 '값'("%v")이 있어야 합니다.
if ( isString( format ) && format.match("%v") ) {
// 양수, 음수 및 0 형식을 생성하고 반환합니다.
return {
pos : format,
neg : format.replace("-", "").replace("%v", " -%v"),
zero : 형식
};
// 형식이 없거나 개체에 유효한 양수 값이 누락된 경우 기본값을 사용합니다.
} else if ( !format || !format.pos || !format.pos.match("%v") ) {
// defaults가 문자열인 경우 다음 번에 더 빠르게 확인할 수 있도록 객체로 캐스팅합니다.
return ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {
pos : 기본값,
neg : defaults.replace("%v", "-%v"),
zero : 기본값
};
}
// 그렇지 않으면 형식이 괜찮다고 가정합니다.
return format;
}
/* --- API メソッド --- */
/**
* 文字列/文字列の配列を受け取り、すべての書式設定/クラフトを削除し、生の浮動小数点値を返します
* エイリアス:accounting.`parse(string)`
*
* には 10 進数を含める必要があります浮動小数点数と一致する正規表現 (デフォルトは
*accounting.settings.number.decmal)。数値に非標準の小数
* 区切り文字が使用されている場合は、それを 2 番目の引数として指定します。
*
* 括弧で囲まれた負の値にも一致します (例: "$ (1.99)" => -1.99)
*
* エラーはスローされません (`NaN` は 0 になります)。これは将来変更される可能性があります
*/
var unformat = lib.unformat = lib.parse = function(value, 10 進数) {
// 再帰的に配列のフォーマットを解除します:
if (isArray(value)) {
return map(value, function(val) {
return unformat(val, 10 進数);
});
}
// サイレントに失敗します (適切なエラーが必要です):
value = value || 0;
// すでに数値である場合は、値をそのまま返します。
if (typeof value === "number") return value;
// デフォルトの小数点は設定から取得されますが、たとえば次のように設定できます。 "," オプション:
10 進数 = 10 進数 || lib.settings.number.10進数;
// 数字、小数点、マイナス記号以外のすべてを削除する正規表現を構築します:
var regex = new RegExp("[^0-9-" decim "]", ["g"]),
unformatted = parseFloat(
("" value)
.replace(/((.*))/, "-$1") // 括弧で囲まれた値を負の値に置き換えます
.replace(regex, ' ') // 不要なものをすべて取り除きます
.replace(decimal, '.') // 小数点が標準であることを確認してください
);
// これは通知なしで失敗するため、問題が発生する可能性があります。様子を見てみましょう:
return !isNaN(unformatted) ?未フォーマット: 0;
};
/**
* 浮動小数点を小数のように扱う toFixed() の実装
*
*
が引き起こすバイナリ丸めの問題 (例: (0.615).toFixed(2) === "0.61") を修正します。 * 会計および財務関連のソフトウェアの問題。
*/
var toFixed = lib.toFixed = function(value, precision) {
precision = checkPrecision(precision, lib.settings.number.precision);
var power = Math.pow(10, precision);
// 精度で乗算し、正確に丸め、除算してネイティブ toFixed() を使用します。
return (Math.round(lib.unformat(value) * power) / power).toFixed(precision);
};
/**
* カンマ区切りの千の桁とカスタムの精度/小数点以下の桁数を使用して数値をフォーマットします
*
* 精度と千の位/小数点の区切り文字をオーバーライドしてローカライズします
* 2 番目のパラメータ `precision` はオブジェクトにすることができます`settings.number` と一致します
*/
var formatNumber = lib.formatNumber = function(number, precision, 1000, 10 進数) {
// 配列を再帰的にフォーマットします:
if (isArray(number) ) {
return map(number, function(val) {
return formatNumber(val, precision, 1000, 10 進数);
});
}
// 数値をクリーンアップします:
number = unformat(number);
// デフォルトを拡張して、2 番目のパラメータ (オブジェクトの場合) またはすべてのパラメータからオプション オブジェクトを構築します:
var opts =defaults(
(isObject(precision) ? precision : {
precision : precision,
thousand : 千,
10 進数 : 10 進数
}),
lib.settings.number
),
// 精度のクリーンアップ
usePrecision = checkPrecision(opts.precision) ,
// 計算を実行します:
negative = number
0 ? "-" : "",
base = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) "",
mod =base.length > 3?ベースの長さ % 3 : 0;
// 数値をフォーマットします:
return negative (mod ?base.substr(0, mod) opts.thousand : "")base.substr(mod).replace(/(d{3})(? =d)/g, "$1" opts.thousand) (usePrecision ? opts.Decimal toFixed(Math.abs(number), usePrecision).split('.')[1] : "");
};
/**
* 数値を通貨にフォーマットします
*
* 使用法:accounting.formatMoney(number,symbol,precision,somethingssep,decimalSep,format)
* デフォルト:(0, "$", 2, ",", ".", "%s%v")
*
* 記号、精度、桁区切り記号、および形式をオーバーライドしてローカライズします。
* 2 番目のパラメーターは、`settings に一致するオブジェクトにすることができます.currency` これが最も簡単な方法です。
*
* やるべきこと: パラメーターを整理する
*/
var formatMoney = lib.formatMoney = function(number, シンボル, 精度, 1000, 10 進数, format) {
// 配列を再帰的にフォーマットします:
if ( isArray(number)) {
return map(number, function(val){
return formatMoney(val, シンボル, 精度, 1000, 10 進数, フォーマット);
});
}
// 数値をクリーンアップします:
number = unformat(number);
// デフォルトを拡張して、2 番目のパラメータ (オブジェクトの場合) またはすべてのパラメータからオプション オブジェクトを構築します:
var opts =defaults(
(isObject(symbol) ?symbol : {
symbol :symbol,
精度 : 精度、
千 : 千、
10 進数 : 10 進数、
形式 : 形式 }),
lib.settings.currency
),
// 形式をチェックします (pos、neg、およびゼロを含むオブジェクトを返します):
formats = checkCurrencyFormat(opts.format),
//この値に使用する形式を選択します:
useFormat = number > 0 ? formats.pos : 数値 // 通貨記号を追加して返します:
return useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision) )、opts.thousand、opts.10 進数));
};
/**
* 数値のリストを会計列にフォーマットします。空白を埋め込みます。
* 通貨記号、桁区切り記号、小数点以下の桁を並べます。
*
* リストは数値の配列である必要があります。
* 2 番目のパラメータは、パラメータに一致するキーを含むオブジェクトにすることができます
*
* 同じ長さの会計形式の数値文字列の配列を返します
*
* 注意: `white-space:pre` CSS
* ブラウザーが出力文字列内の空白を折りたたむのを防ぐために、リスト コンテナーでルールが必要です。
*/
lib.formatColumn = function(リスト, シンボル, 精度, 1000, 10 進数, 形式) {
if (!list) return [];
// デフォルトを拡張して、2 番目のパラメータ (オブジェクトの場合) またはすべてのパラメータからオプション オブジェクトを構築します:
var opts =defaults(
(isObject(symbol) ?symbol : {
symbol :symbol,
精度 : 精度、
千 : 千、
十進数 : 10 進数、
形式 : 形式
})、
lib.settings.currency
)、
//形式をチェックします (pos、neg、およびゼロのオブジェクトを返します)。今のところ必要なのは pos だけです:
formats = checkCurrencyFormat(opts.format),
// 文字列の先頭または通貨記号の後にパディングするかどうか:
padAfterSymbol = formats.pos.indexOf("%s") // 列内の最長文字列の長さの値を保存します:
maxLength = 0,
// オプションに従ってリストをフォーマットし、最長文字列の長さを保存します:
formatted = map(list, function(val, i) {
if (isArray(val)) {
// list が多次元配列の場合、列を再帰的にフォーマットします:
return lib.formatColumn (val, opts);
} else {
// 値をクリーンアップします
val = unformat(val)
// この値に使用する形式を選択します (pos、neg、ゼロ) ):
var useFormat = val > 0 ? formats.pos : val // この値をフォーマットして、長さを保存します。 >fVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decmal));
if (fVal.length > maxLength) maxLength = fVal.length
return fVal;
};
// リスト内の各数値を埋め込み、数値の列を送り返します:
return map(formatted, function(val, i) {
// これが文字列である場合のみ (ネストされた配列ではない)すでに埋め込まれているはずです):
if (isString(val) && val.length // シンボルの位置に応じて、シンボルの後またはインデックス 0 に埋め込みます:
return PadAfterSymbol ? val.replace(opts.symbol, opts.symbol (new Array(maxLength - val.length 1).join(" "))) : (new Array(maxLength - val.length 1).join(" ")) val;
}
戻り値
});
};
/* --- モジュール定義 --- */
// CommonJS のアカウントをエクスポートします。 AMD モジュールとしてロードされる場合は、そのように定義します。
// それ以外の場合は、グローバル オブジェクトに `accounting` を追加するだけです。
if (typeof exports !== 'unknown') {
if (typeof module !== 'unknown' && module.exports) {
エクスポート = module.exports = lib;
}
exports.accounting = lib;
} else if (typeofdefine === 'function' &&define.amd) {
// ライブラリを AMD モジュールとして返します:
define([], function() {
returnライブラリ;
});
} else {
// `accounting` を元の値に戻すには、accounting.noConflict を使用します。
// ライブラリの `accounting` オブジェクトへの参照を返します。
// 例: `varnumbers =accounting.noConflict();`
lib.noConflict = (function(oldAccounting) {
return function() {
// ルートの `accounting` 変数の値をリセットします:
root.accounting = oldAccounting;
// noConflict メソッドを削除します:
lib.noConflict = unknown;
// ライブラリへの参照を返して再割り当てします:
return lib; >};
})(root.accounting);
// ルート (グローバル/ウィンドウ) オブジェクトで `fx` を宣言します:
root['accounting'] = lib;
}
// ルートはブラウザの `window` またはサーバー上の `global` になります:
}(this));
官方下ダウンロード地址:https://raw.github.com/josscrowcroft/accounting.js/master/accounting.js
使用例
formatMoney
// デフォルトの使用法:
accounting.formatMoney(12345678); // $12,345,678.00
// ヨーロッパの書式設定 (カスタム記号と区切り文字)、オプション オブジェクトを 2 番目のパラメータとして使用することもできます:
accounting.formatMoney(4999.99, "?", 2, ".", ","); // ?4.999,99
// 負の値も適切にフォーマットされます:
accounting.formatMoney(-500000, "£ ", 0); // £ -500,000
// 単純な `format` 文字列によりシンボルの位置を制御できます [%v = value, %s = シンボル]:
accounting.formatMoney(5318008, { シンボル: "GBP", format: "%v %s" }); // 5,318,008.00 GBP
formatNumber
accounting.formatNumber(5318008); // 5,318,008
accounting.formatNumber(9876543.21, 3, " "); // 9 876 543.210
unformat
accounting.unformat("£ 12,345,678.90 GBP"); // 12345678.9
官方演示实例:http://josscrowcroft.github.com/accounting.js/
脚本之家下ダウンロード地址 会計.js

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









