You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:18:03