已知三角形三个顶点在直角坐标系下的坐标分别为:
(2.3, 2.5)
(6.4, 3.1)
(5.1, 7.2)
求该三角形的面积。
注意,要提交的是一个小数形式表示的浮点数。
要求精确到小数后3位,如不足3位,需要补零。
public static void main(String[] args) {
// 海伦公式求三角形面积
float a=(float) Math.sqrt((6.4-2.3)*(6.4-2.3)+(3.1-2.5)*(3.1-2.5));
float b=(float) Math.sqrt((6.4-5.1)*(6.4-5.1)+(3.1-7.2)*(3.1-7.2));
float c=(float) Math.sqrt((5.1-2.3)*(5.1-2.3)+(7.2-2.5)*(7.2-2.5));
float q=(float) ((a+b+c)/2.0);
float area=(float) Math.sqrt(q*(q-a)*(q-b)*(q-c));
System.out.println(String.format("%.3f",area ));
//向量方法求三角形面积
double x1 = 2.3;
double y1 = 2.5;
double x2 = 6.4;
double y2 = 3.1;
double x3 = 5.1;
double y3 = 7.2;
double area1 = Math.abs(((x1*y2+x2*y3+x3*y1)-(y1*x2+y2*x3+y3*x1))/2);
System.out.println(String.format("%.3f",area ));
}
该题实现考查了两个知识点:
1.根据三个点的坐标,如何求三角形面积
有两种方法,一种为海伦公式,另一种可以根据向量来求
2.如何保留3位小数
string.format()函数生成具有特定格式的字符串
%f - 接受一个数字并将其转化为浮点数格式
为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:
(1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号.
(2) 占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格.
(3) 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
(4) 宽度数值
(5) 小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接f(浮点数转义符, 如%6.3f)则设定该浮点数的小数只保留n位, 若后接s(字符串转义符, 如%5.3s)则设定该字符串只显示前n位.