お願いします。

指数型で出力されているデータを実数型に
変換する方法、コマンドなどありましたら教えてください。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

> 上記、実行した結果以下のようになってしまいます。



あんな簡単なスクリプトが動かなくて、ちょっとドキッとしました。

$1の前は、カンマです。念の為、awk の部分を見やすいように全角で書いておきましょう。

awk ’{printf ”%20.15f”,$1}’

# やっぱり、みずらい…
    • good
    • 0

多分、awk を使うのが一番簡単。



例えば、一行に一個だけ指数形式の数値だけがあって、それが複数行有るようなファイルを
もっているとしたら、

% cat 指数形式のファイル | awk '{printf "%20.15f", $1}'

で、標準出力に固定小数点形式(全20桁で、小数点以下が15桁)で出力されます。

この回答への補足

度々ホントにありがとうございます。
上記、実行した結果以下のようになってしまいます。
$ cat test | awk '{printf "%20.15f".$1}'
awk: cmd. line:1: {printf "%20.15f".$1}
awk: cmd. line:1: ^ parse error
Broken pipe

hp-uxのrunacctが出力するfiscrptというファイルを実数形式にしたいのです。
データはすべて指数形式になっています。(私もrunacctについて理解できてないのですが。。。m(_)m

補足日時:2001/10/31 09:09
    • good
    • 0

私の勘違いかもしれませんので、下記の仮定で、一つでもはずしてたら、パスして下さい。



>hp-ux
  って、ヒューレットパッカードのUNIXワークステーションの事ですよね。

で、
>実数型で出力
と言うのは、標準出力(画面とかファイル)にテキストで出力されているわけですよね。

で、chibitotoro さんは、UNIXのターミナル使用方法は、「わかっている」(コマンドは全部知らないけど・・)ですよね。

であるならば、UNIXのコマンドで、sed か、awk を調べてみて下さい。

ただし、今までawk sedを全く使ったことがなく かつ Cコンパイラなら経験あり ならば、Cでフィルタプログラムを作ったほうが、時間的に早そうです。

この回答への補足

はい、ヒューレットパッカードのUNIXワークステーションですね。
runacctが出力するfiscrptというファイルを変換したいのです。

sedコマンドは使った事があります。
awkついては調べた事はありますが、理解しきれていないです。。。

補足日時:2001/10/31 09:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qコマンドプロンプト標準出力とファイル出力両方

お世話になってます

コマンドプロンプトで
echo "こんにちは"
とするとプロンプトに
こんにちは
と書き込まれます。
echo "こんにちは" >> file.txt
とするとfile.txtに
こんにちは
と書き込まれます。

では、1行で
プロンプトとfile.txtの両方に
こんにちは
と書き込むことは出来ますか?

file.txtは上書きではなく、追記で行いたく思ってます。

よろしくお願いします。

Aベストアンサー

残念ながらそのような機能は無いはずです。

ので、少し面倒臭いですが自分で作りましょう。

バッチファイル内で行う場合、
-----
Call :echoEx こんにちは
Exit

:echoEx
echo %*
echo %*>>file.txt
Exit /b 0
-----
この:echoExというサブルーチンが画面とファイルに出力する部分です。
echoコマンドの代わりにCall :echoExを呼んで使います。

echo こんにちは

Call :echoEx こんにちは


コマンドプロンプト上で手打ちの時であれば、似たようなバッチファイルをつくりましょう。
例えば echoEx.batという名前で
-----
echo %*
echo %*>>file.txt
Exit /b 0
-----
のようなバッチファイルを作成し、
echoコマンドの代わりにechoEx.batをコールして使います。

echo こんにちは

echoEx.bat こんにちは

QDOSプロンプト(cmd.exe)の標準出力ログ出力方法 (gpgコマンド)

DOSプロンプトにてgpgコマンドを実行した際のログ
を出力させようとしています。

リダイレクトを使用しても、ファイルに書き出されません。
(もちろん画面コピーしてから貼り付ければ可能ですが自動化したいです)

gpgコマンドが標準出力へ出力するログは、ファイルに書き出すことは
出来ないでしょうか?

/*****************************************
(例):GPGコマンドが出力するログ(保存したいログ)
*****************************************/
1. gpg暗号化 + 署名 成功時のログ
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“test <gpg.test@test.co.jp>”
2048ビットRSA鍵, ID FFFFFF作成日付は2014-01-01 (主鍵ID 12345678)


2. gpg復号化 + 署名 検証成功時のログ
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“test <gpg.test@test.co.jp>”
2048ビットRSA鍵, ID FFFFFF作成日付は2014-01-01 (主鍵ID 12345678)

gpg: 2048-ビットRSA鍵, ID 876543211, 日付2012-01-23に暗号化されました
“public.player <public@test.co.jp>”
gpg: 2014-01-01 02:01:11にRSA鍵ID 12345678で施された署名
gpg: “test <gpg.test@test.co.jp>”からの正しい署名

DOSプロンプトにてgpgコマンドを実行した際のログ
を出力させようとしています。

リダイレクトを使用しても、ファイルに書き出されません。
(もちろん画面コピーしてから貼り付ければ可能ですが自動化したいです)

gpgコマンドが標準出力へ出力するログは、ファイルに書き出すことは
出来ないでしょうか?

/*****************************************
(例):GPGコマンドが出力するログ(保存したいログ)
*****************************************/
1. gpg暗号化 + 署名 成功時のログ
次のユーザ...続きを読む

Aベストアンサー

>なぜ出ないんでしょ...Wr5さんのPC環境ではgpgコマンドに対する
>リダイレクトに成功しますか?

失敗しますね……。
gpgのソースまでは確認していませんが…リダイレクトを強制的に外している…んでしょうかねぇ……

cmd.exeが妙な挙動をしている。という可能性もあるにはありますが…。

フロントエンド的なプログラム作って、stdoutとstderrをパイプで受け取れるようにしてみないと判らない…でしょうかね。
もっとも、その場合でも別々に出力されるのでコマンド プロンプトの画面に表示される状況とは異なってしまいますが。
CreateProcess()のlpStartupInfo.hStdOutputとlpStartupInfo.hStdErrorに同じハンドル渡せば一緒に取れる…か?
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331%28v=vs.85%29.aspx

パイプに変更してWindows版のteeコマンドで…でも失敗しますし…。

>なぜ出ないんでしょ...Wr5さんのPC環境ではgpgコマンドに対する
>リダイレクトに成功しますか?

失敗しますね……。
gpgのソースまでは確認していませんが…リダイレクトを強制的に外している…んでしょうかねぇ……

cmd.exeが妙な挙動をしている。という可能性もあるにはありますが…。

フロントエンド的なプログラム作って、stdoutとstderrをパイプで受け取れるようにしてみないと判らない…でしょうかね。
もっとも、その場合でも別々に出力されるのでコマンド プロンプトの画面に表示される状況とは異な...続きを読む

Qなぜ同じ実数型は整数型よりも広い範囲を表現できるのですか?

なぜ同じ実数型は整数型よりも広い範囲を表現できるのですか?

素朴な疑問です。
整数型が表現できる範囲は単純で理解できるのですが、それだけに
実数型が同じ情報量(バイト数)でさらに広い範囲の数を表現できるのはなぜでしょう?

仮数部や指数部の数字を掛けたり足したりするだけで
全ての数をきっちり作れるというのはにわかには信じられません。

もしかして近似値を使っているのでしょうか?(0.099→0.1のように)

Aベストアンサー

実数型がその表現範囲において「全ての数をきっちり作れる」わけではありません。
有効桁数というものがあり、その桁数を越えた部分に関しては、保障されません。

> もしかして近似値を使っているのでしょうか?(0.099→0.1のように)

そこまでひどくはありませんが、0.999999999999999999999999999999999999という数値が1.0になってしまったりします。

QKシェルでの文字型→数値型変換

こんにちは、
Kシェルをはじめたばかりなのですが
調べかたが悪かったのか、わからなかった為、質問させて頂きます。

文字型で年月日ばらばらに取得した数値を
(年:2003、月:10、日:09)
改めて数値型に変換するには
(年:2003、月:10、日:9)
どうすれば良いのでしょうか。


Kシェルをはじめた、と書きましたがシェル自体経験が浅いです。
ご存知のかた、宜しければご教授下さい。

Aベストアンサー

Kシェル自体には文字列->数値変換の機能は無いと思われます。
exprコマンドを使用すれば算術結果が取得できますの以下のようにしてください。
--------------------------------
DD=09   #DDには文字として"09"が格納されている
DD=`expr $DD + 0`   #強制的に算術演算させる
echo $DD #DDには"9"が格納される
----------------------------------
これをコピー&ペーストする場合は、全角スペースを半角スペースに変えてください

QR言語での極小値の指数形式での出力

R言語での極小値の指数形式での出力に関して質問です。
Windows vista, Rのバージョンは x64 2.12.1 です
統計に関する計算処理で exp関数を使うスクリプトを作っています。

入力する値を a とすると
計算する式は
1 - exp(-exp( a )) となります(R script上)

a <- -10 とすると計算結果は
4.53988992012988e-5
となりますが

aが小さい数になってくると
a <- -40
計算結果は 0 となってしまいます。

本来指数表示の極小数が 1.0e-50のように表示されるべきなのですが切り捨てられて0として扱われてしまっているようです。
オプションで変更できるのかと思いoptions の scipen をいじってみましたがうまくいきません。
このような計算の結果の極小数を指数表示(1.0e-50のように)するにはどうすればいいのでしょうか?

------------スクリプト--------------
a <- -4
b <- -38
result_a <- 1- exp(-exp( a ))
result_b <- 1- exp(-exp( b ))
cat(result_a , "\n", result_b )

-----------出力---------------
0.01814893
0

R言語での極小値の指数形式での出力に関して質問です。
Windows vista, Rのバージョンは x64 2.12.1 です
統計に関する計算処理で exp関数を使うスクリプトを作っています。

入力する値を a とすると
計算する式は
1 - exp(-exp( a )) となります(R script上)

a <- -10 とすると計算結果は
4.53988992012988e-5
となりますが

aが小さい数になってくると
a <- -40
計算結果は 0 となってしまいます。

本来指数表示の極小数が 1.0e-50のように表示されるべきなのですが切り捨てられて0として扱われてし...続きを読む

Aベストアンサー

expm1 なんてのもあるか?


人気Q&Aランキング

おすすめ情報