Dart 代码中的十进制格式不正确

问题描述 投票:0回答:2

问题描述

我在 Dart 中格式化十进制值时遇到问题。

我有以下代码片段:

import 'package:decimal/Decimal.dart';

Decimal formatDecimal(Decimal value) {
  String formattedString = value.toStringAsFixed(2);
  return Decimal.parse(formattedString);
}

void main() {
  Decimal decimalValue = Decimal.parse('8');
  Decimal formattedValue = formatDecimal(decimalValue);
  
  print(formattedValue); // Output: 8
}

打印语句的预期输出是十进制格式的 8.00,但实际输出是 8。看来格式没有正确应用。

有人可以建议如何在 Dart 中正确格式化十进制值 8 到 8.00 吗?

谢谢你。

flutter math decimal riverpod
2个回答
0
投票

根据文档,您可以使用

intl
包将格式化程序应用于您的值:

import 'package:decimal/decimal.dart';
import 'package:decimal/intl.dart';

main() {
  var value = Decimal.parse('1234.56');
  var formatter = NumberFormat.decimalPattern('en-US');
  print(formatter.format(DecimalIntl(value)));
}

-1
投票

立即尝试

import 'package:decimal/decimal.dart';

Decimal formatDecimal(Decimal value) {
  String formattedString = value.toStringAsFixed(2);
  
  // Append trailing zeros if necessary
  if (!formattedString.contains('.')) {
    formattedString += '.00';
  } else if (formattedString.endsWith('.')) {
    formattedString += '00';
  } else if (formattedString.endsWith('.0')) {
    formattedString += '0';
  }
  
  return Decimal.parse(formattedString);
}

void main() {
  Decimal decimalValue = Decimal.parse('8');
  Decimal formattedValue = formatDecimal(decimalValue);
  
  print(formattedValue); // Output: 8.00
}
© www.soinside.com 2019 - 2024. All rights reserved.