【发布时间】:2010-12-21 20:59:46
【问题描述】:
我刚过来,决定尝试一些 Ada。 缺点是语法和函数与 C++ 相差甚远。 所以我不得不喜欢塞满各种东西才能让这件事发挥作用。
我的问题是,是否有比我在这里所做的更好的方法来进行计算
IF(B < 0.0) THEN
B := ABS(B);
X1 := (B / 2.0) + Sqrt( (B / 2.0) ** 2.0 + ABS(C));
X2 := (B / 2.0) - Sqrt( (B / 2.0) ** 2.0 + ABS(C));
ELSE
X1 := -(B / 2.0) + Sqrt( (B / 2.0) ** 2.0 - C);
X2 := -(B / 2.0) - Sqrt( (B / 2.0) ** 2.0 - C);
END IF;
我对负数有一些问题,这就是为什么我做了一个 IF 语句并使用 ABS() 将它们变成正数。但奇怪的是它对另一种情况非常有效,这很奇怪......
【问题讨论】:
-
关于前两行 - 当你已经知道 B 是负数时,我会避免使用 abs() 。使用 B:=-B。即使编译器很聪明并且可以内联内容。