gpt4 book ai didi

c# - Convert.ToDouble(object) 中的小数精度是否取决于文化?

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:56 25 4
gpt4 key购买 nike

可能这是一个非常基本的问题,但我真的很想知道到底发生了什么。

例如,如果我们在 C# 中执行以下操作:

object obj = "330.1500249000119";
var val = Convert.ToDouble(obj);

val 变为:330.15002490001189

问题是为什么最后的9要换成89呢?我们能阻止它以这种方式发生吗?这种精确度是否取决于当前文化?

最佳答案

这与文化无关。有些数字不能用2进制数精确表示,就像10进制中的1/3不能用.3333333精确表示一样

请注意,在您的特定情况下,您输入的位数超过了数据类型所允许的位数:Double 可用的有效位数为 15-16(取决于范围),您的数字超出了这一范围。

在这种情况下,您可以使用 Decimal 而不是 Double:

object obj = "330.1500249000119";
var val = Convert.ToDecimal(obj);

关于c# - Convert.ToDouble(object) 中的小数精度是否取决于文化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12409130/

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