double类型转换成bigdecimal类型 decimal和float可以互相转化么?
浏览量:3702
时间:2023-06-28 22:54:30
作者:采采
decimal和float可以互相转化么?
你可以直接使用转换类转换。比如decimal (0.01f) decimal的有效位数很大,达到28位,但其数据范围比float和double类型小。
小数类型不是C#中的基本类型,所以使用时会影响计算的性能。所以转换很可能会出错。如果超过十进制的最大范围。请注意处理异常。
为什么java的BigDecimal也无法精准计算double类型吗?
不要使用double来构造BigDcimal对象。大十进制和。;的构造者有这样一段话,:。
这个构造函数的结果可能有些不可预测。人们可能会假设用Java编写会创建一个恰好等于0.1的(未缩放值为1,缩放比例为1),但它实际上等于0.1000000000000551151231257827021181583404541015625。这是因为0.1不能精确地表示为(或者,就此而言,表示为任何有限长度的二进制分数)。因此,传递给构造函数的值并不完全等于0.1,另一方面,外观构造函数完全是predictabl:编写的,正如人们所预料的那样,它创建了一个完全等于0.1的。在那里,通常建议优先使用字符串构造函数。因为替身本身就是不准确,如果用double作为构造函数参数,BigDecimal对象也会不准确。比如用浮点数0.1构造BigDecimal对象,它的实际值是0.1000000000511512312572702181583404541015625。因此,建议用于需要精确计算的场景。
简而言之,在需要精确浮点数计算的场景中,不要使用double类型的变量,float anywhere,而是使用String类型创建BigDecimal。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。