DECLARE @A INT,@B INT,@C INT,@D FLOAT,@S FLOAT
SET @A=100
SET @B=78
SET @C=56IF(@A<@B+@C AND @A>ABS(@B-@C))
BEGIN
SET @D=(@B*@B+@C*@C-@A*@A)/2*@B*@C
SET @S=0.5*@B*@C*SQRT(1-@D*@D) 
PRINT'三角形的面积是'+CONVERT(VARCHAR(50),@S)
END
ELSE
BEGIN
PRINT'这三个边长不可能组成三角形'
END
报的错误:
消息 3623,级别 16,状态 1,第 9 行
发生域错误。

解决方案 »

  1.   

    用海伦公式求解:
    ---假设有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得: 
    ---S=√[p(p-a)(p-b)(p-c)] 
    ---而公式里的p为半周长: 
    ---p=(a+b+c)/2 
    DECLARE @A INT,@B INT,@C INT,@D FLOAT,@S FLOAT,@p INTSET @A=100
    SET @B=78
    SET @C=56
    SET @p =(@A+@B+@c)/2IF(@A<@B+@C AND @A>ABS(@B-@C))
    BEGINSET @S=SQRT(@p*(@p-@a)*(@p-@b)*(@p-@b))
    PRINT'三角形的面积是'+CONVERT(VARCHAR(50),@S)
    END
    ELSE
    BEGIN
    PRINT'这三个边长不可能组成三角形'
    END三角形的面积是1739.33
      

  2.   

    DECLARE @A INT,@B INT,@C INT,@S FLOAT,@p INTSET @A=100
    SET @B=78
    SET @C=56
    SET @p =(@A+@B+@c)/2BEGIN
    IF @A+@B<@C OR @A+@C<@B OR @C+@B<@A
    SELECT N'这三个边长不可能组成三角形'
    ELSE
    BEGIN TRY
    SET @S=SQRT(@p*(@p-@a)*(@p-@b)*(@p-@b))
    SELECT N'三角形的面积是'+CONVERT(VARCHAR(50),@S) END TRY

    BEGIN CATCH
    SELECT N'这三个边长不可能组成三角形'
    END CATCH
    END-----------------------------
    三角形的面积是1739.33(1 row(s) affected)
      

  3.   

    调整一下if条件:
    IF @A+@B<@C OR @A+@C<@B OR @C+@B<@A
    =====
    改为:IF @A+@B<=@C OR @A+@C<=@B OR @C+@B<=@A
      

  4.   

    SET @D=(@B*@B+@C*@C-@A*@A)/2*@B*@C
    SELECT @D
    SET @S=0.5*@B*@C*SQRT(1-@D*@D) 
    PRINT'三角形的面积是'+CONVERT(VARCHAR(50),@S)
    --不是吧,sqrt里面是负数!!!
    /*
    -1703520.0
    发生域错误。
    */
      

  5.   

        /* 已知三边的任意三角形
         * 余弦定理:a2=b2+c2-2bccosA, b2=a2+c2-2accosB, c2=a2+b2-2abcosC 
         * 三角形一边的平方等于另两边的平方和再减去这两边与夹角余弦的乘积的2倍 
         */
        public Triangle(double side1, double side2, double side3) {
            this.side1 = side1;
            this.side2 = side2;
            this.side3 = side3;
            this.angle1 = Math.acos((this.side2 * this.side2
                    + this.side3 + this.side3 - this.side1 * this.side1)
                    / 2*  this.side2 * this.side3);    //余弦定理
            this.angle2 = Math.acos((this.side1 * this.side1
                    + this.side3 + this.side3 - this.side2 * this.side1)
                    / 2*  this.side1 * this.side3);    //余弦定理
            this.angle3 = Math.PI - this.side1 - this.side2;
            this.perimeter = this.side1 + this.side2 + this.side3;
            this.area = this.side1 * this.side2 * Math.cos(this.angle3);
        }
      

  6.   

    http://topic.csdn.net/u/20090505/19/86a4c86b-3288-433b-ba04-315fe35f03ed.html
    求面积用海轮公式:
    已知三角形三边长为a,b,c.
    周长的一半p = (a+b+c)/2
    三角形面积=sqrt(p*(p-a)*(p-b)*(p-c))