如何在颤振中使用精度对整数进行舍入

2024-04-09

我试图使折线图的 Y 轴间隔在颤动中动态化。这里MaxVal将获取Y轴的最大值。

int interval = (maxVal/6).toInt();
int length = interval.toString().length.toInt();

所以在这里我将 maxVal 除以 6,这样我就可以得到间隔并找出长度。接下来我需要根据长度对间隔进行舍入。但我看不到任何增加颤动精度的选项。

预期输出

如果 maxVal = 10000 那么 间隔将 1666 那么长度将为 4。然后 我预计四舍五入值为 2000


我假设您要求将(非负)整数四舍五入到其最高有效基数 10 数字。对非负整数进行舍入的一般方法是添加要舍入的单位的一半,然后截断。例如,如果要将非负整数四舍五入到最接近的 1000,可以添加 1000/2 = 500,然后丢弃百位、十位和个位。丢弃这些数字的一个简单方法是执行整数除以 1000,然后再次乘以 1000。

最棘手的部分是确定要舍入到什么单位,因为它是可变的。如果您想要最高有效的 10 进制数字,则需要确定位数。理论上你可以用对数来计算,但依赖浮点运算的精确结果通常是有风险的,你必须将 0 作为特殊情况来处理,而且更难确定正确性。仅查找数字字符串表示形式的长度更简单且不易出错。一旦找到位数,我们就可以确定要舍入哪个单位来计算相应的 10 次幂。

import 'dart:math';

/// Rounds [n] to the nearest multiple of [multiple].
int roundToMultiple(int n, int multiple) {
  assert(n >= 0);
  assert(multiple > 0);
  return (n + (multiple ~/ 2)) ~/ multiple * multiple;
}

/// Rounds [n] to its most significant digit.
int roundToMostSignificantDigit(int n) {
  assert(n >= 0);
  var numDigits = n.toString().length;
  var magnitude = pow(10, numDigits - 1) as int;
  return roundToMultiple(n, magnitude);
}

void main() {
  var inputs = [
    0,
    1,
    5,
    9,
    10,
    11,
    16,
    19,
    20,
    21,
    49,
    50,
    51,
    99,
    100,
    469,
    833,
    1666,
  ];
  for (var n in inputs) {
    var rounded = roundToMostSignificantDigit(n);
    print('$n => $rounded');
  }
}

打印:

0 => 0
1 => 1
5 => 5
9 => 9
10 => 10
11 => 10
16 => 20
19 => 20
20 => 20
21 => 20
49 => 50
50 => 50
51 => 50
99 => 100
100 => 100
469 => 500
833 => 800
1666 => 2000

(如果需要,上面的代码也应该可以调整以处理负数,但首先您需要定义负数是否应该向 0 舍入或向负无穷大舍入。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在颤振中使用精度对整数进行舍入 的相关文章

  • 如何在 Flutter Provider 中删除 StreamController 中的数据?

    我正在使用provider来构建我的应用程序 因此数据被添加到StreamController中 每次刷新我的应用程序时 它都会调用API 然后将数据推送到StreamController 问题是如何在替换之前删除数据新的那一个 contr
  • 自定义卡片形状 Flutter SDK

    我在 Flutter 上使用 GridView 开发了一个应用程序 GridView 项目是卡片 默认卡片形状是半径为 4 的矩形 我知道 Card Widget 有 shape 属性 并且它需要 ShapeBorder 类 但我无法找到如
  • 扑。应用程序不会崩溃并发送崩溃报告

    我已经集成了Firebase Crashlytics在我的应用程序中 我正在测试 Android 应用程序 我强迫崩溃来检查它 if true List arr throw arr 1 2 我的问题是应用程序不会崩溃 我只是在日志中得到这个
  • Flutter Firestore - 如何从文档字段中的文档引用获取数据?

    我正在构建一个具有不同问题类型的自学应用程序 现在 其中一个问题有一个包含文档参考列表的字段 在 Flutter 中 我有以下代码 Query
  • flutter:动画过渡到命名路线

    当我使用Navigator pushNamed context someRoute 有一个最小的动画 从屏幕底部沿着新路线滑动 在 Android 上 在 iOS 上可能看起来不同 如何向此过渡添加自定义动画 I found 本文 http
  • 用颤动画布在形状上切一个洞

    如何使用颤动画布在形状上 切一个洞 我有一组相当复杂的形状 看起来像现实世界的物体 该物体上有一个圆角矩形形状的孔 我真的很想从形状中减去 RRect 但我找不到任何有关如何执行此操作的信息 canvas clipRRect myRRect
  • 配置根项目“firebase_auth”时出现问题

    my error 我无法构建 apk 发布文件 我完成了应用程序一段时间 没有出现错误 几天后 我在构建应用程序时收到此错误 请告诉我如何摆脱它 我尝试了 4 个小时 什么也没得到 FAILURE Build failed with an
  • 实施 ChangeNotifier 与 StateNotifier

    我很熟悉Provider https pub dev packages provider打包并将其与ChangeNotifier 假设我有 3 个 getter 和具有不同功能的方法 切换加载 切换图像加载 切换 ObsecurePassw
  • Flutter 中的 AndroidManifest 中缺少默认通知通道元数据

    我在用firebase messaging 5 0 1软件包来实现推送通知 在 IOS 中一切正常 而在 Android 中 当我的移动应用程序在后台运行时 我收到通知 但它没有导航到相应的屏幕 它只是打开默认屏幕 如何实现到该特定屏幕的导
  • Dart 从 UInt8List 获取扩展

    我正在使用该包图像选择器 https pub dev packages image picker接受来自用户的图像 这会产生 PickedFile 和字节数组 由于图像随后被上传 我想知道如何从字节数组中猜测 mime 类型 PickedF
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 如何在 Dart 分析器/source-gen 中从某些元素获取 AstNode?

    我在用着source gen解析一些Dart文件 通过Dartanalyzer 我正在延长GeneratorForAnnotation lt gt 以及重写方法FutureOr
  • 传递 Stack 中两个小部件之间的所有手势

    我正在开发一个应用程序 在地图上显示标记 如下所示 它的工作方式是标记在地图小部件 上方 呈现为Stack 我的问题是 目前 标记 吸收 用于控制下方地图的手势 如果手势在标记上开始 因此我想知道 有没有办法在堆栈中的两个小部件之间传递所有
  • 在 Flutter 中显示 iOS 的 PDF 内联文件

    我正在 flutter 中专门为 iOS 开发一个应用程序 现阶段 我需要向其中添加 PDF 文件 问题是 flutter 没有原生的方式来显示 PDF 文件 据我研究 由此tread https github com flutter fl
  • 将 numpy 舍入到最近的步骤

    我想知道如何将 numpy 中的数字舍入到上限或下限阈值 该阈值是预定义步长的函数 希望以更清晰的方式说明 如果我有数字 123 且步长等于 50 我需要将 123 舍入到最接近的 150 或 100 在本例中为 100 我得出了下面的函数
  • library_private_types_in_public_api 和 StatefulWidget

    将 linter 升级到新版本后 flutter lints 2 0 1 在我的 pubspec 中 linter 启用此规则 公共 API 中的库私有类型 https dart dev tools linter rules library
  • 如何在 Dart 中以正确的方式重定向和重新加载?

    在 Dart 中进行重定向和重新加载的首选方法是什么 我们是否只使用 window location href window location href 有几种不同的方法可以处理 URI 更改 每种方法都有自己的用途 当您想要将用户发送到另
  • 如何在 TextField 中垂直居中不同大小的hintText?

    我有一个TextField像这样 输入文本和提示文本的大小不同 TextField style Theme of context textTheme subhead copyWith fontSize 70 0 decoration Inp
  • 如何在没有 firebase 的情况下在 flutter 中显示推送通知?

    在我的 flutter 应用程序中 我必须在没有 firebase 的情况下显示推送通知 我的服务器会在点击特定 API 后向我发送一条消息 并且我希望将该消息显示为推送通知 你能告诉我一种方法如何在颤振中做到这一点吗 您可以使用本地通知插
  • 扩展运算符可以用来提供函数参数吗?

    我正在编写扩展 statelessWidget 的类 它的 build 方法返回Text 小部件 我需要将来自构造函数的文本选项 对齐 阶梯等 传递给它Map

随机推荐