我将货币值作为浮动存储在mysql表中。
问题是,mysql正在向上或向下舍入数字。
例如,12345.68四舍五入为12345.7
如何停止此操作,或者是否应该使用更好的数据类型?
我希望将原始值保留在小数点后2位以内。
将适用列的定义从其当前设置更改为:
FLOAT(9,2)
上一个代码片段中的2
指示MySQL将值保持在小数点后2位。现在很可能设置为1
;因此,观察到的行为。请随意将9
更改为更适用的值。
更多关于浮动和精度的信息。
相关答案,建议不要使用float
s,而是使用decimal
。
不要使用FLOAT
类型。改用DECIMAL
。浮点将十进制数转换为二进制数,从而导致舍入(精度损失)。Decimal将数字存储为小数-无转换。
在您的情况下,将列定义为DECIMAL(12,2)
应该可以。根据数字的预期大小选择宽度(第一个数字)。在示例中,预期大小为12位(包括小数点后的数字)。
我有一个关于PostgreSQL 9.2中浮点数的新手问题。 有没有直接舍入浮点数的函数,即不需要先将数字转换为数字类型? 另外,我想知道是否有一个函数可以用任意的度量单位进行取整,例如精确到0.05? 首先将数字转换为十进制形式时,以下查询工作正常: 然而,我真正想要实现的是以下几点: 这当前给了我以下错误: 谢啦
问题是,每当我使用“System.out.printf(”%.2F\n“,BMI)”时,输出将四舍五入,而不是切断小数点的其余部分。下面是我的代码:
我写了这段代码,它只是对n个数字的列表进行求和,以练习浮点运算,但我不明白这一点: 我正在使用float,这意味着我有7位精度,因此,如果我执行10002*10002=100040004的操作,数据类型float的结果将是100040000.000000,因为我丢失了第7位以外的任何数字(程序仍然知道指数,如图所示)。 如果此程序中的输入是 然而,您将看到,当这个程序计算30003*30003=9
我在MATLAB中有一个代码,它可以处理非常小的数字,例如,我有10^{-25}量级的值,但是当MATLAB进行计算时,值本身被舍入为0。注意,我指的不是来显示这些额外的小数,而是数字本身被更改为0。我认为这是因为默认情况下,MATLAB在计算时最多使用小数点后的15位数字。我如何改变这一点,以便在计算中保留非常小的数字? 编辑: 我的代码如下: 问题出在这一步: 其中“差”非常接近于0。如何在此
问题内容: 我面临该功能的奇怪行为: 此代码打印: 我希望浮动值总是四舍五入,但是取整到最接近的偶数。 为什么会出现这种行为?获得正确结果的最佳方法是什么? 我尝试使用,但结果是相同的。 问题答案: “ 数字类型” 部分明确记录了此行为: x 四舍五入为n位数字,四舍五入为偶数。如果省略n,则默认为0。 注意 四舍五入到一半 。这也被称为 银行家四舍五入 ; 通过四舍五入到最接近的 偶数, 您可以
例如,当我在控制台中运行0.1+0.2时,它返回0.300000000000000004。然而,当我运行0.1+0.3时,它正确地返回0.4。 是否有任何逻辑可以确定哪些特定的浮动不会被“正确”舍入?