删除两位小数点后的数字,而不将其值四舍五入吗?

时间:2019-03-28 21:42:40

标签: dart flutter

var num1 = 10.12345678

我应该使用num1删除两个小数点后的数字而不舍入其值。
我需要输出为 10.12

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      title: ' Delete digits after two decimal point ',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHome(),
    ));

class MyHome extends StatefulWidget {
  @override
  _MyHomeState createState() => _MyHomeState();
}

class _MyHomeState extends State<MyHome> {
    @override
  Widget build(BuildContext context) {

    var num1 = 10.12345678;
    print(num1); //i need output as 10.12

    return Container();
  }

}

7 个答案:

答案 0 :(得分:3)

此处的某些答案无效(最上面的答案是舍入而不是截断)。 这是一种方法:

(n * 100).truncateToDouble()/100

答案 1 :(得分:2)

尝试一下

var num1 = 10.12345678;
var num2 = double.parse(num1.toStringAsFixed(2)); // num2 = 10.12

答案 2 :(得分:1)

您可以使用国际包(https://pub.dartlang.org/packages/intl#-installing-tab-

var num1 = 10.12345678;
var f = new NumberFormat("###.0#", "en_US");
print(f.format(num1));

答案 3 :(得分:1)

如果要四舍五入,请使用它。

 double mod = pow(10.0, places);
 return ((val * mod).round().toDouble() / mod);

如果您只想截断,请使用它。

return val - val % 0.01;

答案 4 :(得分:0)

String toFixed2DecimalPlaces(double data, {int decimalPlaces = 2}) {
  List<String> values = data.toString().split('.');
  if (values.length == 2 && values[0] != '0' && values[1].length >= decimalPlaces && decimalPlaces > 0)
    return values[0] + '.' + values[1].substring(0, decimalPlaces);
  else
    return data.toString();
}

答案 5 :(得分:0)

你也可以试试这个----> (0.2055).toStringAsFixed(2)

    var per = 0.2055;
    
    Text( "result view -> ${double.parse((per * 100).toStringAsFixed(2))}%",
            style: TextStyle(color: Colors.white, fontSize: 10)),

result value -> 
input -> 0.2055
output -> result view ->20.00 

答案 6 :(得分:0)

这个问题有一个简单的解决方案。

double value = 17.56565656;
//as string
String formatted = value.toStringAsFixed(2); // 17.56
//as double
double formattedDouble = double.parse(formatted); //17.56