2016-10-11 3 views
-1

私は2つの数学の引数を持っている:「F」の丸数字の作り方。電源の問題

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
int main(int argc, char *argv[]) { 
    float a, b, x, f; 
    printf("\nx="); 
    scanf("%f", &x); 
    a = 1/(12*pow(x,2) + 7*x-5); 
    printf("\na=%.3f", a); 
    b = pow(x,2)*pow(x,3); 
    b=fabs(b); 
    printf("\nb=%.3f", b); 
    if (a + b <= 10)  
     if (2*pow(b,2) > 0 && 4*pow(a,2) > 0.00001) { 
      f = 4*pow(a,2)-2*pow(b,4); 
      printf("\nf1=%.3f", f); 
     } 
     else { 
      printf("\ x is worng (f1)"); 
      return 2; 
     } 
    else 
     if (b!=0) { 
      f = a/b; 
      printf("\nf2=%.3", f); 
     } 
     else { 
      printf("\ x is wrong (f2)"); 
      return 3; 
     } 
    return 0; 
} 

いくつかの回の結果は、0.001よりも小さくなっています。 printf("\nf2=%.3", f);を使用して、ドットの後に3つの数字しか表示されないようにする必要があります。私は結果を変えずに見せたい。私の頭の中で私は10 ^( - n)を乗じることを考えました。しかし、私は方法を考えることができません。もし他のアイデアがあれば素晴らしいだろう。

+0

あなたの言葉は、使用されている文章で意味をなさないものです。遅くしてからやり直してください。また、問題を再現するために完全なコードを投稿する必要があります。 – xaxxon

+0

あなたの質問は明確ではありません。数字を小数点以下3桁まで丸めたいですか?数字0.000125で何を印刷したいですか? – vz0

+0

0.001 * 10 ^( - 1)以上、0.012 * 10 ^( - 2)と同じです。 –

答えて

4

std::scientificは、このためだけにある:最後のprintfへ

#include <iostream> 
#include <iomanip> 
std::cout << std::setprecision(3) << std::scientific << f; 
+0

iomanip .. mhm ..おしゃれなので – Treycos

+0

お試しいただきありがとうございます。 –

-1

あなた秒が壊れている:のprintfの使用上の

printf("\nf2=%.3", f); 

test.c:3:20: warning: conversion lacks type at end of format [-Wformat=] 
      printf("\nf2=%.3", f); 
        ^
test.c:3:20: warning: too many arguments for format [-Wformat-extra-args] 

例:

printf("%.3f", 1.121212); // prints 1.121 

科学使用するには%eを使用するprintfの表記

printf("%.3e", 0.000125); // prints 1.250e-04 
+0

それは彼が求めたものではない – Treycos

+0

@Treycosはい、彼はprintfをC++で使いたいが、フォーマット文字列は間違っている。 "\ nf2 =%。3"という形式の書式文字列を使ってprintf()を呼び出すと、無効な書式なので間違いがあります。 – vz0

+0

20.3kかどうか、上記の答えは、OPは何を求めているのか、彼はprintfを示しているが、彼はそれを使用しなければならないと言っているわけではないことを明らかにする。 – Treycos