Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
331 views
in Technique[技术] by (71.8m points)

How to Print Out the Square Root of A Negative Number with i Displayed in C

I am trying to figure out how to display the square root of a number if it happens to be negative (as it is entered by the user), and if so, display it correctly with the "i" displayed as well. When I do the normal sqrt function, the result is always something like -1.#IND. When I tried using the double complex variables, the positive numbers nor the negative numbers would come out clean.

Below is my code; the comments are what my goal is. The 4 num variables are entered by the user and can be any integer, positive or negative.

 //  Display the square root of each number.  Remember that the user can enter negative numbers and 
//  will need to find the negative root with the "i" displayed.
printf("
The square root of %d is %.4f", num1, sqrt(num1));
printf("
The square root of %d is %.4f", num2, sqrt(num2));
printf("
The square root of %d is %.4f", num3, sqrt(num3));
printf("
The square root of %d is %.4f", num4, sqrt(num4));
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If you're working with floating point you can use the built-in complex utilities, e.g.:

#include <complex.h>
#include <stdio.h>

int main(void)
{
    double complex num = -4.0;
    double complex s = csqrt(num);

    printf("%.2f + %.2fi
", creal(s), cimag(s));
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...