gpt4 book ai didi

.net - 如何从单精度转换为 double 并保持精度

转载 作者:行者123 更新时间:2023-12-02 02:02:10 25 4
gpt4 key购买 nike

这个小代码简介

    Dim s As Single = 1.15
Dim d As Double = CDbl(s)
Console.WriteLine(s)
Console.WriteLine(d)

产量:

1.15
1.14999997615814

这完全出乎意料。为什么会发生这种情况,我该如何解决?

预计到达时间:

这不是我的代码,原来原始输入是以字符串“1.15”的形式输入的,所以他们将其转换为单精度,然后是 double 。删除单个部分让每个人都很开心。

最佳答案

在计算机科学的语言中,精度是根据尾数和指数的大小给出的。它与“重要人物”无关。也许最令人困惑的是您正在查看 base 10 中的 base 2 float !

如果您查看这两个值的以 2 为底的表示形式,您会发现它们相距不远。

十进制 1.15 的二进制值为 1.00100110011001...无限Single 有 23 位尾数,Double 有 52 位尾数。显然,在有限的精度下,尾数中的重复将在不同的地方被截断。

如果您希望数字以相同的 10 进制表示形式显示,您将不得不忍受一些草率,除非您通知字符串转换例程以更好的方式格式化它。

关于.net - 如何从单精度转换为 double 并保持精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com