Dart求解一元一次方程如何输出完整double类型的X值
问题原因
你代码中使用~/运算符计算X值,该运算符为Dart的整除运算符,运算时会自动舍弃小数部分返回整数结果,因此无法输出带小数的double类型值。
修复方案
- 替换计算逻辑:将
X = -B ~/ A;修改为X = -B / A;,普通除法运算符/会返回完整的double类型结果 - 可选格式化输出:如果需要固定输出的小数位数,可使用
toStringAsFixed(n)方法,n为要保留的小数位数,例如保留2位小数可写为print("X=${X.toStringAsFixed(2)}"); - 额外逻辑优化:原代码中
for(var i=0 ; i<1 ; i--)逻辑存在问题,i初始为0每次减1永远满足i<1的条件,会导致程序无限循环,若只需执行一次可直接删除该for循环。
修复后完整代码
import 'dart:io' show stdin; import 'dart:core' show FormatException, num, print; void main() { try { print("方程1:ax + b = 0"); print("请输入A的值"); var a = stdin.readLineSync(); var A = num.parse(a!); print("请输入B的值"); var b = stdin.readLineSync(); var B = num.parse(b!); num? X; if (B != 0) { if (A != 0) { print("A = $A"); print("B = $B"); X = -B / A; // 不需要固定小数位数可直接改为 print("X=$X"); print("X=${X.toStringAsFixed(2)}"); } else if (A == 0) { print(A); print(B); print("该方程无实数解"); print("X = 无实根"); } } else { if (A != 0) { print(A); print(B); print("该方程的解为0"); print("X = 0"); } else { print(A); print(B); print("该方程有无穷多解"); print("X = 全体实数"); } } } on FormatException { print("输入值无效"); print("请输入合法的数字"); } }
内容的提问来源于stack exchange,提问作者MrCortex
相关产品推荐
相关产品推荐

