gpt4 book ai didi

c# - 从 Decimal 类型到 Single 类型的转换是缩小转换还是扩大转换?

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

在 Ms Docs 的 Single struct 和 Decimal struct 文档中,关于从 Decimal 到 Single 的类型转换,前者说它是扩大转换,后者说它是缩小转换。哪一个是对的?而且我不知道如何在转换为 Single 类型时保留 Decimal 类型的大小。请解释。

最佳答案

严格来说,从 Decimal 到 Single 的转换既不是 narrowing 也不是 widening。 Decimal 比 Single 具有更窄的范围,但具有更宽的精度

从 Decimal 到 Single 的转换永远不会抛出 OverflowException 但它会导致信息丢失。这就是为什么在任何一个方向上都没有隐式转换的原因。

与小数的范围 ±1.0 x 10 相比,单值的范围是 ±1.5 x 10−45 到 ±3.4 x 1038 −28 至 ±7.9228 x 1028。因此,最小的 Decimal 和最大的 Decimal 都可以放入 Single 而不会溢出。 Decimal 的大小将保持不变。

但是,与小数中的 28-29 位相比,Single 的精度仅为 6-9 位(以 10 为基数)。因此,如果将 Decimal 转换为 Single,第六至第九位之后的任何数字都将丢失。存在潜在的信息损失,但不会损失数量级。

More Information

您问如何将存储在 12 个字节中的 Decimal 的大小放入仅 4 个字节的 Single 中。原因是十进制/ float 不存储为直接转换为二进制 - 部分存储用于大小(如科学格式的“10 次方”),部分用于二进制相当于数字本身。

关于c# - 从 Decimal 类型到 Single 类型的转换是缩小转换还是扩大转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57580859/

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