• ベストアンサー

数値を指数部と仮数部に分離したい

ある数値を仮数部と指数部に分けたいのですが、どうすればよいでしょうか。 frexp()という関数を見つけたのですが、これはある数nを n = x * 2^p に分解する関数なのです。 n = x * 10^p に分解する関数はありますか。それともfrexp()を使って目的を果たせるでしょうか。 sprintf()を用いれば、指数形式に変換すれば出来るのですが、もっとスマートな方法があれば良いなと思い、質問させていただきました。 どうぞよろしくお願いします。

noname#105136
noname#105136

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

サンプルを作ってみました。 お考えにそぐわないところがあれば、ご自由に手を加えてください。 #include <stdio.h> #include <math.h> void getMantissaAndExponent(double num, double *man, int *exp) {   double log = log10(num);      *exp = log;   *man = pow(10.0, log - *exp); } int main(void) {   double n, m;   int e, i;      for (n = 1.2345, i = 0; i < 10; n *= 10, i++) {     getMantissaAndExponent(n, &m, &e);     printf("%g = %f * 10^%d\n", n, m, e);   }      for (n = 0.12345, i = 0; i < 10; n /= 10, i++) {     getMantissaAndExponent(n, &m, &e);     printf("%g = %f * 10^%d\n", n, m, e);   }   return 0; } (注)インデントのため、全角空白を使っています。

noname#105136
質問者

お礼

回答ありがとうございます。 logの計算結果は、整数部が指数、小数部が仮数をあらわしているのですね。 大変参考になりました。

関連するQ&A

  • pのべき指数について

    nを自然数、pを素数とします。n!の標準分解に現れるpのべき指数が                    [n/p]+[n/p^2]+[n/p^3]+・・・                  となることの証明をお願いします。

  • 指数関数の問題について

    指数関数の問題についての質問です。 以下のような出題が冬季の課題であったのですが、、これはミスプリントではないかと思ったのですが、いかがでしょうか?  x   2x-1 5 = 3 このように底が違う指数関数の等式は答えが出るのでしょうか? 教科書をある程度見直したのですが、これと同じ形式の問題が見つかりません。 もしも私の勉強不足であったらすいません! よろしくお願いします。

  • 指数関数で 0^0=1 とすることは正しい?

    指数関数とは x^1=x, x^(p+q)=x^p*x^q を定義とする関数です。 0^0 は通常定義されませんが、その値を考えてみました。 関数の定義により 0^0 は次の条件を満たす必要があります。  0^0=0^(0+0)=0^0*0^0  (0^0)^0=(0^0)^(-1+1)=(0^0)^(-1)*(0^0)^1 1番目の式より 0^0=1 or 0 となりますが2番目の式から 0^0=0 は否定されているように見えます。 よって結論は 0^0=1 です。 この考えは合っているのか、間違いならどこか、教えてください。 なお、底と値域は0または正の実数、指数は実数で考えます。

  • 指数分布の関数

    指数分布のエクセルの関数でEXPONDISTでそれぞれ入れる値は何なのか教えてください。X,?(難しい記号で読み方わかりません)、関数形式の3つです。Xは平均値かな?ちがうかな...とにかく分からなくてまだ大学に残ってます。どうかおねがいします。

  • 指数関数を含む連立方程式:効率的な数値解法

    X : 未知の n×m 実行列 (2 <= m < n) A : 既知の m×m 実正則行列(m次正則行列) と置くとき, X = e(X) A …(1) が成り立つことがわかっています.但し,e(X)は,Xの各要素xをその指数関数exp(x)で置き換えたn×m 実行列を表すこととします.式(1)の右辺はe(X)とAの積です. このとき,式(1)をXについて解きたいと考えています.恐らく,代数的に解くことは無理で,数値解法(数値アルゴリズム)を利用するほかないと思います. この問題の場合,どのような数値解法が効率的でしょうか? 数値解法に疎いので,アドバイスを頂ければ嬉しいです.

  • 指数分布について

    確率変数Xが次のような密度関数をもつ指数分布に従っているとき 密度関数 f(x)=3exp(-3x)   t≧0   =0        t≦0 このとき 確率変数U=exp(-3X)と定義するときに、Uの従う分布はどうなるかを求めたいのですが、どうすればよいのでしょうか?? まずUの分布関数を求めて、微分をしようとしているのですが。 P(U<x)=P(exp(-3X)<x)=P(T>-1/3logx) このときの積分範囲は0からになるのでしょうか?? そうするとUの分布関数は1になり、密度は0になるということでしょうか?

  • べき級数の、xの指数について

    べき級数は ∞ Σ a_n (x-c)^n n = 0 このような形になるというのはわかったのですが、 (x-c)の指数が2nになったとき、つまり ∞ Σ a_n (x-c)^2n n = 0 このような形になったときも、これはべき級数であるといってよいのでしょうか? 1/(1+x^2) をべき級数で表したらxの指数が2nになって、 ∞ Σ (-1)^k * (x)^2n n = 0 という形になったので、  この形をべき級数と呼んでいいのか疑問に思い質問しました。

  • 指数関数方程式の解法

    指数関数の解法についてですが、超越関数に代数的な解法は無いと 習いましたが、数値代入等である程度あたりがつけられるものに関しては、 何か汎用的な解法があるのかと思い、質問させて頂いています。 例えば、 2^x = 3x-1   (解)x = 1, 3 3^x = 6x-3   (解)x = 1, 2 4^x = 12x-8   (解)x = 1, 2 と言った問題ですが、何か良い解法を御存知であれば御教授下さい。 因みに、コンピューターを使った数値解析法とかではなく、筆記によって 数分で解く事の出来る様な解法が対象です。

  • 実数値関数の問題です

    命題関数の問題です。なかなか理解できません。回答を見ながら勉強したいと考えているのでよろしくお願いします。 Xを実数値関数の集合とし、命題pを“0の値をもつ”とするとき、次の命題の真偽を定めよ。 (1)p(2x+3) (2)p(3x^2-2x-1) (3)p(5x^2-6x+1) (4)p(x^3-2x^2+5x-7) (5)p(4x^2-2x+1)

  • 可換な指数関数

     RSA暗号で使われるh(x,y) = x^y mod n という指数関数が入れ替え可能な(h(h(x,y1),y2) = h(h(x,y2),y1))一方向アキュムレータだととある記事に書いてあったので、それに従って以下のような関数fを例に計算してみましたが、f(f(f(x,3),5),7) != f(f(f(x,5),7),3) でした。可換ではないように見えるのですが、どこが間違っているのか教えて下さい。 n = 47 * 59 (47 = 2 * 23 + 1, 59 = 2 * 29 + 1)  f(x,y) = x^y mod n  よろしくお願いします。  

専門家に質問してみよう