首页 > 解决方案 > 我们可以在 Flutter 中动态设置小数点的精度吗

问题描述

我有一个多客户会计应用程序。对于不同的客户端,双精度中小数点的偏好是不同的。有没有办法在全局计算和显示中设置双精度?

标签: flutterdart

解决方案


恐怕没有办法。

我有一个与您的非常相似的应用程序,并且我为所有数字创建了一个类:

const int precision = 3;

class NumberEntry implements Comparable<NumberEntry> {
  final num value;

  NumberEntry(num input) : value = _round(input);

  static num _round(num input) {
    return num.parse(input.toStringAsFixed(precision));
  }

  NumberEntry operator +(NumberEntry other) => NumberEntry(value + other.value);
  NumberEntry operator -(NumberEntry other) => NumberEntry(value - other.value);
  NumberEntry operator *(NumberEntry other) => NumberEntry(value * other.value);
  NumberEntry operator /(NumberEntry other) => NumberEntry(value / other.value);
  bool operator >(NumberEntry other) => value > other.value;
  bool operator <(NumberEntry other) => value < other.value;
  bool operator >=(NumberEntry other) => value >= other.value;
  bool operator <=(NumberEntry other) => value <= other.value;

  @override
  int compareTo(NumberEntry other) {
    if (value == other.value) {
      return 0;
    }
    return value > other.value ? 1 : -1;
  }

  @override
  String toString() {
    return displayText;
  }

  String get displayText {
    return value.toStringAsFixed(precision);
  }

  String get displayTextWithSign {
    final String additionalSign = !value.isNegative ? '+' : '';
    return additionalSign + displayText;
  }

  NumberEntry abs() {
    return NumberEntry(value.abs());
  }
}

您可以修改它以满足您的需要。


推荐阅读