|
|
1
6
您的第一个解决方案似乎更安全,而且在概念上似乎更适合这个问题:尽快从float转换为decimal,在decimal类型中执行所有相关计算,然后在写入db之前执行最后一分钟转换回float。
编辑:在检索浮点值并转换为十进制值后,您可能仍然需要执行额外的一轮(例如到小数点后3位,或任何适合您的应用程序的操作),以确保最终得到实际需要的十进制值。
第二个解决方案在我看来不可靠:如果
(免责声明:虽然我在处理其他上下文中的浮点和小数问题方面有丰富的经验,但我对SQL几乎一无所知。) |
|
|
2
2
老问题,但我很惊讶这里没有提到正常的做法,所以我只是补充一下。 通常,您会添加一小部分您知道比您正在处理的数字精度小得多的数字,例如:
当然,添加的量必须大于所用浮点类型的精度。 |
|
|
3
0
使用十进制等任意精度格式。这样你就可以把它留给语言来实现它的正确(或错误,视情况而定)。 |
|
|
4
0
我使用以下命令成功地对浮动列进行了四舍五入: 选择“转换”(float,round(round(convert,decimal(38,14),float_column_name),3),2)) |
|
|
Leo · 为什么carg(-0)返回-pi? 11 月前 |
|
Fyodor · 在C中使用sin和cos计算数学表达式不正确? 1 年前 |
|
|
Alexander · 为什么数字的输出不同? 1 年前 |
|
Ronny · 如何防止程序返回“inf”? 1 年前 |
|
|
EMS · 为什么双重打印的值与C中的浮点值相同,而它们的大小不同? 1 年前 |
|
|
Dakolas · 对python十进制库感到困惑 1 年前 |
|
|
RTC222 · 无法获取vrndscalepd的正确舍入模式代码 2 年前 |