分割の結果は常にゼロです[重複
-
23-09-2019 - |
質問
この質問にはすでに答えがあります:
- 1/nを分割すると常に0.0を返します[複製 3つの答え
このCコードを取得しました。
#include <stdio.h>
int main(void)
{
int n, d, i;
double t=0, k;
scanf("%d %d", &n, &d);
t = (1/100) * d;
k = n / 3;
printf("%.2lf\t%.2lf\n", t, k);
return 0;
}
私の変数「t」が常にゼロである理由を知りたいですか(printf関数で)?
解決
この表現で
t = (1/100) * d;
1と100は整数値であり、整数部門は切り捨てられているので、これはこれと同じです
t = (0) * d;
あなたはそれをこのようにフロート定数にする必要があります
t = (1.0/100.0) * d;
あなたもこれで同じことをしたいかもしれません
k = n / 3.0;
他のヒント
整数部門を使用しており、1/100は整数部門では常にゼロになります。
フローティングポイント分割を行い、結果を単純に切り捨てたい場合は、代わりにフローティングポインターリテラルを使用していることを確認でき、Dは暗黙的に変換されます。
t = (int)((1.0 / 100.0) * d);
そのせいだと思います
t = (1/100) * d;
整数分割として1/100 = 0
その後、0 * dは常に0に等しくなります
1.0/100.0を実行すると、正しく機能すると思います
Webアプリケーションの作成時にコンテンツデータベースが作成されます。ただし、複数のサイトコレクションになる可能性があるように、Webアプリケーションに複数のコンテンツデータベースが複数ある場合があります。各サイトコレクションは最大1つのデータベースを持つことができますが、複数のサイトコレクションは同じコンテンツデータベースを共有できます。これはMOSS、SP 2010の場合であり、現在SP 2013 にもあります。
所属していません StackOverflow