« 2016年12月 | トップページ | 2017年2月 »

2017年1月

2017年1月26日 (木)

C言語で株の利益、より高い精度で

C言語で株の利益を計算する時ある程度の誤差がでます。



そこでより高い精度で計算するためにプログラムのfloatをdoubleに変えて計算してみました。



float型で表現できるのは、±10-38~1038の範囲で、有効桁は7桁です。
double型では、±10-308~10308の範囲で、有効桁は15桁です。

(現実的には証券会社では円単位で計算するのでおそらくfloat型の精度で充分です。)



/*  while 文を使って株の利益を計算するプログラムを作ってみた。DAYトレーディングで1日に合計金額の1%の利益があるものとして100万円の元金が464営業日目に1億円を上回るとゆう計算結果が出た。*/
#include  <stdio.h>

int main(void)
{
    int  day=1;
    double  money=100.0;
    while  (money<10000.0)  {
        printf("%d日目の合計=%f万円\n",day,money);
        day++;
        money=(double)1.01*money;
    }
    return 0;
}
/* このプログラムを実行すると463日目に合計金額が約9919万1552円になることが判る。 */



計算結果は次の様になります。(一瞬で計算出来ます。)



Screenshot_from_20170126_222438



Screenshot_from_20170126_222456



にほんブログ村 小説ブログ SF小説へ

| | コメント (0) | トラックバック (0)

2017年1月25日 (水)

Linux上でC言語の株の利益のプログラムを実行

久しぶりにLinuxでC言語のプログラムを作り、コンパイルし、実行してみた。



gccは入っていると思うので、下記を実行。



sudo apt-get install libc6-dev



下枠のプログラムをテキストエディターにタイピング(コピー&ペースト)し、/home/userディレクトリーにkabu01.cという名前で保存。



/*  while 文を使って株の利益を計算するプログラムを作ってみた。DAYトレーディングで1日に合計金額の1%の利益があるものとして100万円の元金が464営業日目に1億円を上回るとゆう計算結果が出た。*/
#include  <stdio.h>

int main(void)
{
    int  day=1;
    float  money=100.0;
    while  (money<10000.0)  {
        printf("%d日目の合計=%f万円\n",day,money);
        day++;
        money=(float)1.01*money;
    }
    return 0;
}
/* このプログラムを実行すると463日目に合計金額が約9919万1123円になることが判る。 */



Linux端末で次を実行



$ gcc kabu01.c -o kabu01.out



次にLinux端末で次を実行



$ ./kabu01.out



結果がLinux端末に表示されます。結構簡単です。

Screenshot_from_20170126_143821

Screenshot_from_20170126_143830



にほんブログ村 小説ブログ SF小説へ

| | コメント (0) | トラックバック (0)

« 2016年12月 | トップページ | 2017年2月 »