- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个小函数,以在给定增量的两个值之间进行插值。
[ 1.0 .. 0.5 .. 20.0 ]
最佳答案
TL;博士: F# PowerPack 的 BigRational
类型是要走的路 .
浮点循环有什么问题
正如许多人指出的那样,float
值不适合循环:
1/3
一样在十进制中,我们不可避免地会丢失从某个指数开始的所有数字; [0.0000001 .. 0.0000002]
相当于 [1000000 .. 2000000]
中唯一值的数量; BigRational
类型:
open Microsoft.FSharp.Math
// [1 .. 1/3 .. 20]
[1N .. 1N/3N .. 20N]
|> List.map float
|> List.iter (printf "%f; ")
1/3
因为
0.5
从你的问题实际上有一个精确的二进制表示 0.1b 并表示为 +1.00000000000000000000000 * 2-1;因此它不会产生任何累积求和误差。
1.000000; 1.333333; 1.666667; 2.000000; 2.333333; 2.666667; 3.000000; (skipped) 18.000000; 18.333333; 18.666667; 19.000000; 19.333333; 19.666667; 20.000000;
// [0.2 .. 0.1 .. 3]
[1N/5N .. 1N/10N .. 3N]
|> List.map float
|> List.iter (printf "%f; ")
0.200000; 0.300000; 0.400000; 0.500000; (skipped) 2.800000; 2.900000; 3.000000;
BigRational
使用整数计算,这并不比浮点计算慢; float
,但不在循环内); BigRational
就像机器 epsilon 为零一样; pi
这样的无理数。或
sqrt(2)
因为它们没有精确的分数表示。这似乎不是一个很大的问题,因为通常,我们不会同时遍历有理数和无理数,例如
[1 .. pi/2 .. 42]
.如果我们这样做(例如几何计算),通常有一种方法可以减少非理性部分,例如从弧度切换到度数。
关于F# 浮点范围是实验性的,可能会被弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/377078/
我尝试在 gcc 6.0 中实际使用新的 c++1z 功能。 如果我尝试这个小例子: #include #include namespace fs = std::experimental::fil
我有兴趣为一个副项目构建一个新风格的 IDE。主要是为了取消类固醇IDE上的普通记事本。我正在为已经尝试过的或者你已经看到(或没有看到)看起来很酷并且在 IDE 中有用的东西寻找一些灵感。我可以解决的
使用实验性 CSS 属性如 border-radius、text-shadow、box-shadow 和 gradient 在今天的布局中?像 rgba() 这样的值呢? 当我查看网络画廊时,这些 C
我想制作一个 chrome 扩展,作为浏览器窗口的面纱。用户访问网站的次数越多,他们的历史记录就越多。我看过一些 chrome 扩展程序,但它们似乎都链接到一个图标,每次你访问一个新站点时,弹出窗口都
我想在 C++17 中删除包含子文件夹和文件的文件夹。我正在使用 experimental/filesystem namespace filesys = std::experimental::file
我正在尝试设置我的应用程序以使用 Airflow 的实验性 API。我正在使用 apache-airflow==1.10.2 . 使用开箱即用的配置(未启用身份验证),我能够使用 POST /api/
我在 these examples 之后使用 gradle 构建了一些测试 c 和 c++ 程序 在 this answer 的帮助下,我还能够设置具有实验功能的 android studio 来构建
我只是尝试实现一个充当代理的 python 应用程序(用于端口 22)代码如下: import socket import select import code inputSock = socket.
是否存在适用于 Ruby 的(实验性)类浏览器? 我说的是类似于大多数 Smalltalk 实现的类浏览器/编辑器组合(即专注于 [运行时] 类/对象而不是 .rb 文件) P.S.:看起来 pry
引用: Using the new code snippets feature in google chrome 我正在 google chrome 中使用代码片段,所以说我有一个片段文件。check
我有一个 Android 项目,我们使用实验性 Gradle 插件已有一段时间了。随着 Android Studio 3 的发布和向 Gradle 4 的迁移,我有几个问题 在几个月内没有人添加新的实
我尝试实现一个 make_array 的版本,它不完全相同,但非常类似于: http://en.cppreference.com/w/cpp/experimental/make_array 我发现这段
当我更新 ddev 版本 1.19.0 时,drush 命令不起作用。 $ ddev drush OCI runtime exec failed: exec failed: container_lin
我想使用 USB 实验性 api 开发一个 chrome 扩展。我从来没有设法找到我的 USB 设备已连接。这个扩展的起点是这段代码: knob example我更改了 vid 和 pid 以匹配我的
我们如何使用 C API 在 Tensorflow Lite 中创建张量?然后我们如何将它们与解释器一起使用? 我知道 Tensorflow Lite 有 C++ API 的文档,而常规的 Tenso
我玩了一下 experimental device lambdas在 CUDA 7.5 中引入并在此 blog post by Mark Harris 中提升. 对于下面的示例,我删除了很多不需要显示
我正在关注这篇文章 @ https://firebase.googleblog.com/2018/01/streamline-typescript-development-cloud-function
我的问题是我找不到一些合适的文档/指南来遵循以正确设置我的环境。 基本上我使用的是 Android Studio 1.3.2(截至 2015 年 9 月 22 日的最新稳定版)和 Gradle 实验版
我有一个使用 opencv android sdk 的项目,为了加快速度,我决定用 C++ 实现一些功能。 无论如何,我正在使用 gradle 实验性插件 0.4.0 以及何时为 arm64-v8a
我正在尝试在 Android Studio 中使用 NDK 运行一些 native 代码。我已按照显示的步骤进行操作 HERE使用实验性的 Gradle,但显然并不是一帆风顺。我收到此错误:必须将 a
我是一名优秀的程序员,十分优秀!