[20191013]ストレージ変換スクリプト.txtというOracleの数値タイプ
-あなたが問題を解決するためにobaseで出力=紀元前100年に使用できるかどうかを確認するには、//テストを。また、スクリプトで丸め前に、仮数の問題を検討することを忘れ。
- //おそらくそこには常にいくつかの詳細が考慮されていなかった、このようにプログラミング...
- // num2raw_5.shは、次のようにコードがある:
#!/ binに/ bashのの
#番号をOracleのRAW!のために変換
Odebug = $ {ODEBUG:-0 }
#プロセスパラメータ入力""スペースとすべてを削除します。変数v_numする。可変長v_lenに保存する。
v_num = "$ *"
v_num v_num = $ {// [、] /}
E位ストリップまたはトレーリング0 0000.000出力0または小数、
v_num = $(エコー$ v_num / 0.1 + | -e sedの"S / [EE] + \ / * 10 ^ /?" -e "S / ^ /スケール= 180 [; /" | BC | TR -d '\ nは\\\ R' | sedの-e ".. S / \ \([0-9] * [1-9] \)0 \ + $ / \ 1 /" -e " 。S / \ 0 \ + $ //
")[[IF" $のv_num「=〜^ - * $]。];その後、
v_sign 1 =。
v_num = $ {v_num :. 1:
Fiの
場合は[$ odebug -eq 1]; その後、
エコーv_num = "$のv_num"
Fi回線
v_res = ""
の場合[ "$のv_num" == "0"]; 次いで
v_res = "80"
エコー"$ v_res"
出口0
Fiの
v_pos = $(exprのインデックスの$ v_num "")
であれば[$ v_pos -gt 1]。次いで
v_exp = $((v_pos / 2))
のelif [$ v_pos -eq 0]; 次いで
v_exp = $((($ {#1 v_num} +1)/ 2))
のelif [$ v_pos -eq 1]。次いで
v_tmp1 = $ {v_num:1:180}
v_tmp2 = $(エコー$ v_tmp1 | 'S / ^ 0 \ + // G' SED)
v_exp = $((($ {#1 v_tmp2} - $ {#1 v_tmp1}) / 2))
Fiの
v_exp1 = $(printfの"%の02X" $(($ v_exp + 192)))
もし[$ v_sign -eq 1]。
v_res = $ {v_exp1} $ {v_res}
#オラクル番号型最大長22バイト(21バイトではない22である??)され、1バイトの指数。
。四舍五入、加5 * 10 ^ -41解决问题要作不BC#
= $ v_num / 100 ^($ v_exp)+ 5 * 10 ^ -41; v_tmp = $(エコー「スケール= 180スケール= 40。 / 1 "| BC | TR -d '\ nは\\\ R' | sedの-e"。。S / \ \([0-9] * [1-9] \)0 \ + $ / \ 1 / "-e "S / \ 0 \ + $ //")。
もし[$ odebug -eq 1]; 次いで
エコーv_num = "$ v_num" v_len = "$ v_len" v_exp = "$ v_exp" v_exp1 = "$ v_exp1" v_tmp = "$ v_tmp"
Fiの
[$ v_sign -eq 0]であれば、次いで
v_res = $ {v_res} $(エコー"obaseで= 100; $のv_tmp" | "" | BC TR -d | AWK「BEGIN {RS = "+ "} /./ {printf関数"は、%02X" $ 1 +1} ')
他
v_res = $ {v_res} $(エコー"obaseで= 100; $ v_tmp" | BC | TR -d "" |
AWK 'BEGIN {RS = "+ "} /./ {printf関数" %の02X"を、101- $ 1}') Fiの
もし[$ v_sign -eq 1 -a $ {#1 v_tmp}が40 -lt]。次いで
v_res = $ {v_res}」、 "" 66"
Fiの
エコー"$ v_res"
[20191013]オラクル数変換スクリプト型ストレージの.txt
おすすめ
転載: www.cnblogs.com/lfree/p/11715309.html
ランキング