演算法訓練 sign函式 浮點數精度
阿新 • • 發佈:2019-01-22
/*
* @author :
* @version : 2018/3/20 22:19.
* 說明:
*/
import java.util.Scanner;
/**
*
*
* 演算法訓練 sign函式
時間限制:1.0s 記憶體限制:256.0MB
問題描述
給定實數x,輸出sign(x)的值。
sign(x)是符號函式,如果x>0,則返回1;如果x=0,則返回0;如果x<0,則返回-1。
輸入格式
一行一個實數x。
輸出格式
一行一個整數表示答案。
樣例輸入
-0.0001
樣例輸出
-1
資料規模和約定
|x|<=10000,輸入資料精度最多達到4位小數。
提示
判斷實數x是否等於零時,由於計算機實數運算誤差,應當引入極小量eps,核心程式碼如下:
其中fabs為cmath中的絕對值函式。
const double eps=1e-6;
if (fabs(x -x) <= eps) {
//x是零
}
*
*
*/
其實如果按照題中的提示,不應該用else語句塊定義等於零的情況.
而應該: if (Math.abs(x) <= 0.000001) {
//x是零
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double x = sc.nextFloat();
System.out.println(sign(x));
}
private static int sign(double x) {
if (x > 0) {
return 1;
}
else if (x < 0) {
return -1;
} else {
return 0;
}
}
}