「簡易数式計算」の版間の差分
日付のフォーマットを変更 |
with文の使用を中止、説明の修正 |
||
| (同じ利用者による、間の6版が非表示) | |||
| 3行目: | 3行目: | ||
== 機能 == | == 機能 == | ||
* | * JavaScript の Math オブジェクトが対応している定数・関数が使用できます(例:pow, PI など)。 | ||
** Math | ** Math は省略できません。 | ||
* オプションを設定することで度数表記で記述できます(通常はラジアン指定)。 | * オプションを設定することで度数表記で記述できます(通常はラジアン指定)。 | ||
| 19行目: | 19行目: | ||
== 変更履歴 == | == 変更履歴 == | ||
* 2013-10-21 初版 | * 1.0.0 (2013-10-21) | ||
** 初版 | |||
== ソースコード == | == ソースコード == | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
#title="簡易数式計算" | #title="簡易数式計算" | ||
// ----------------------------------------------------------------------------- | // ----------------------------------------------------------------------------- | ||
// 簡易数式計算 | // 簡易数式計算 | ||
// 選択文字列、またはカレント行を数式として処理し、結果を表示します。 | // 選択文字列、またはカレント行を数式として処理し、結果を表示します。 | ||
// なお実体はただ | // なお実体はただ JavaScript として実行しているだけです。 | ||
// | // | ||
// (C) ks | // (C) ks | ||
| 44行目: | 45行目: | ||
function Main() { | function Main() { | ||
// ===================================================== | |||
// 追加の定数 | |||
// ===================================================== | |||
// 円周率を 2 バイト文字にしてみる | |||
var π = Math.PI; | |||
// ===================================================== | |||
// ===================================================== | |||
// 標準関数の拡張 | |||
// ===================================================== | |||
// 有効桁位置指定版 | |||
var rep = ["ceil", "floor", "round"]; | |||
for (var i=0; i<rep.length; i++) { | |||
eval("var __$=Math.$;Math.$=function(n,d){return __$(n/Math.pow(10,d||0))*Math.pow(10,d||0)}".replace(/\$/g, rep[i])); | |||
} | |||
// 度数表記への置換 | |||
// ついでに結果の補正 | |||
// Math.sin(Math.PI) が 0 にならないって…… | |||
var rep = ["sin", "cos", "tan", "asin", "acos", "atan"]; | |||
if ($DEGREE$) { | |||
for (var i=0; i<rep.length; i++) { | |||
eval("var __$=Math.$;Math.$=function(d){return Math.round(__$(d/180*Math.PI), -12)}".replace(/\$/g, rep[i])); | |||
} | |||
} else { | |||
for (var i=0; i<rep.length; i++) { | |||
eval("var __$=Math.$;Math.$=function(d){return Math.round(__$(d), -12)}".replace(/\$/g, rep[i])); | |||
} | |||
} | |||
// ===================================================== | |||
// ===================================================== | |||
// 追加の関数 | |||
// ===================================================== | |||
// 16 進数化 | |||
var Hex = function(d) { | |||
return "0x" + d.toString(16).toUpperCase(); | |||
} | |||
// 階乗 | |||
var fact = function(d) { | |||
var r = 1; | |||
while (d > 1) { | |||
r *= d--; | |||
} | |||
return r; | |||
} | |||
// ===================================================== | |||
// 以下実行処理部 | |||
var s = document.Selection; | |||
var e = s.Text; | |||
if (!e) { | |||
e = document.GetLine(s.GetActivePointY(mePosLogical), mePosLogical); | |||
} | |||
try { | |||
var r = eval(e); | |||
Status = r; | |||
if ($COPY$) { | |||
ClipboardData.SetData(r); | |||
} | |||
} catch (e) { | |||
Status = e.message; | |||
} | |||
} | } | ||
Main(); | Main(); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
スポンサーリンク