Windows標準の電卓のように
浮動小数点の「-3.9223669552E+06」を「2.0776330448」に変換させる
にはどうしたらよいのでしょうか。ネットで探してもうまく探せません。
どなたかご教授お願いします。
よし、ひさしぶりに貼っとくか
技術系メーリングリストで質問するときのパターン・ランゲージ
http://www.hyuki.com/writing/techask.html
「-3.9223669552E+06」と「2.0776330448」は等価ではないので何をどう変換したいのか分からないと答えようがないと思いますが。
そもそも「-3.9223669552E+06」と「-3.9223669552+6.0」を混同してませんか?
まずあなたは指数表記について勉強するべきでしょう。
それが分からないと、変換した後の数値が正しいかどうか自分で判断することもできないのでは?
通りすがりさん、F-Eさんありがとうございます。
結果的に「-3.9223669552E+06」を「-3922366.9552」にすれば良いだけでした。
Windowsの電卓ですと「-3.9223669552E+06」を入力して「=」を押すと
「2.0776330448」になるみたいです。
指数がよくわかっていませんでしたので、意味不明ですみませんでした。
>Windowsの電卓ですと「-3.9223669552E+06」を入力して「=」を押すと
>「2.0776330448」になるみたいです。
本当ですか ?
以下を参考にしてください.
http://mrxray.on.coocan.jp/Delphi/Others/008.htm
まさか,ここで関数電卓の使い方の説明をすることになるとは思いませんでした (笑)
Mr.XRAYさんありがとうございます。
電卓に「-3.9223669552E+06」をクリップボードから
貼り付けるのはダメだったのですね。
勉強になりました、ありがとうございました!
>電卓に「-3.9223669552E+06」をクリップボードから
>貼り付けるのはダメだったのですね。
クリップボードから電卓の入力に貼り付けできない,ということは ないですよ.
ちゃんとメニューにもありますから.
重要なのは,電卓の入力欄に,目的の値がセットされているかを確認することではないかと思います.
>重要なのは,電卓の入力欄に,目的の値がセットされているかを確認することではないかと思います.
ものはついででやってみました.
-3.9223669552E+06 を電卓の入力にコピペすると,以下のような表示になりました.
-3.9223669522 +
6
つまり,ここで, = (イコール) キーを押すと
-3.9223669522 + 6
という計算結果が表示されることになります.
マイクロソフトが提供している電卓ですから「くせ」があるのでしょう.
それに文句を言っても致し方ありません.
使う方が自分で確認することだと思います.
http://mrxray.on.coocan.jp/Delphi/Others/008.htm#02
をふまえて.
またまた,僭越ですが,質問された方の代わりにまとさせていただきます.
質問の文章には,Delphi, Windows のバージョンの記載がありませんので,これまた勝手に.
(1) Windows 7 の電卓を起動して,関数電卓にする
(2) -3.9223669552E+06 をコピーして電卓に貼り付ける
(3) 電卓の = キーを押すと,2.0776330448 という値になる
そこで質問です.このように,-3.9223669552E+06 という値から,電卓と同じ値を計算するには,
Delphi XE ではどのようにすればいいのでしょうか ?
回答例
例えば以下のようにするとできます.
uses に Math が必要です.
procedure TForm1.Button1Click(Sender: TObject);
var
LValue : Double;
LManti : Extended;
LExtend : Integer;
begin
LValue := -3.9223669552E+06;
LExtend := Math.Floor(Log10(Abs(LValue)));
LManti := LValue / Math.IntPower(10, LExtend);
LValue := LManti + LExtend;
ShowMessage(FloatToStr(LValue)); //2.0776330448になる
end;
ツイート |