【问题标题】:how to get a double value out of a string in dart?如何从飞镖中的字符串中获取双精度值?
【发布时间】:2020-10-07 18:49:21
【问题描述】:

我有一个要在下拉列表中显示的字符串列表。即

String selectedLeverage = '1 : 100';
final leverageSelected = TextEditingController();
List<String> leverage = [
     "1 : 1",
     "1 : 2",
     "1 : 5",
     "1 : 10",
     "1 : 50",
     "1 : 100",
     "1 : 200",
     "1 : 500",
     "1 : 800",
     "1 : 1000",
     "1 : 2000",
     "1 : 3000",
     ];

我想要什么: 当从下拉列表中选择任何特定值以在将来进行计算时,我想将字符串的最后一个元素提取为双精度值。 (例如,如果用户从下拉列表中选择了 1:100,我希望将 100 作为我从列表杠杆获得的字符串“1:100”中的双倍)

我在做什么:

  double leverage = double.parse('$selectedLeverage.split(" ")[2]');
  print(leverage); // i am expecting to get a doble value here =100.0 but this is giving me 1.0 

这里

   selectedLeverage.split(" ")

正在将字符串 "1:100" 转换为列表 ["1",":","100"] 我正在尝试通过使用将“100”转换为双 100.0

   double.parse('$selectedLeverage.split(" ")[2]')

我不知道自己哪里做错了。

【问题讨论】:

  • 你不能用List&lt;String&gt; leverage = [代替List&lt;int&gt; leverage = [(或List&lt;double&gt;)吗?
  • 你的输出是什么?
  • 我自己尝试了代码,结果证明,它将您的值转换为 int 而不是 double 即使您将 .00 添加到您的值中,它也会忽略那些 0,因为它们不会没关系。
  • @ASADHAMEED 你在 DartPad 中测试过代码吗?如果是这样,DartPad 似乎忽略了 toDouble() 和 double.parse。该代码(@TSR)在 VSCode 调试器的 Flutter/Dart 程序中运行良好。认为这与底层的Javascript有关。我提出了一个问题来查询这个。
  • @pskink 我必须在下拉菜单中显示 1: 100。有一个 : 在 1 到 100 之间登录,这就是我使用字符串的原因。

标签: flutter dart


【解决方案1】:

添加大括号

double.parse('${selectedLeverage.split(" ")[2]}')

或者只是删除引号

double.parse(selectedLeverage.split(" ")[2])

【讨论】:

  • 这应该是被接受的答案。但我更喜欢使用selectedLeverage.split(" ").last 而不是硬编码索引2。它会更符合描述的逻辑。
  • 我尝试同时删除 {} 和添加 .last 但这给出了相同的结果
【解决方案2】:

我最终自己发现了错误,一切都是正确的,但问题出在下拉列表中。选择不同的杠杆值不会改变所选杠杆的值

【讨论】:

    猜你喜欢
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    相关资源
    最近更新 更多