首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >需要帮助对从python函数返回的Mysql结果进行舍入

需要帮助对从python函数返回的Mysql结果进行舍入
EN

Stack Overflow用户
提问于 2019-04-15 05:26:21
回答 2查看 31关注 0票数 0

我是python的新手,我正在利用我的业余时间创建一个程序来自动生成一个销售单。它有几个函数可以从数据库中提取必要的数据,reportlab和一些其他工具可以将结果放到生成的pdf中。我正在尝试对来自Mysql服务器的结果进行舍入。然而,我已经到达了一个点,我被卡住了,我试图舍入结果的所有方法都抛出了一个错误代码,并且不起作用。我需要一些例子来看看,这样我就可以看到这是如何工作的,以及任何相关的反馈,这将有助于我学习。

我曾尝试使用mysql round函数对结果进行舍入,但失败了。我还尝试将结果舍入为生成单位成本本身的函数的一部分。然而,这也失败了。

由于会产生安全漏洞,大量代码已被删除。提供的代码是为了显示我到目前为止所做的工作。打印结果行用于验证代码在开发过程中是否正常工作。它不会抛出任何错误的结果,并将在项目的最后阶段删除。

 def upcpsfunc(self, upc):
    mycursor = self.mydb.cursor()
    command = "Select Packsize from name"" where UPC = %(Upc)s"
    mycursor.execute(command, {'Upc': upc})
    result = mycursor.fetchone()
    print(result[0])
    return result[0]

 def unitcost(self,upc):
    #function to generate unit cost
    mycursor = self.mydb.cursor()
    command = "Select Concat((Cost - Allow)/Packsize) as total from name 
    where UPC = %(Upc)s"
    mycursor.execute(command, {'Upc': upc})
    result = mycursor.fetchone()
    print (result[0])
    return result[0]

至于预期的结果,我更喜欢mysql命令在将结果发送到Reportlab进行放置之前对结果进行舍入。到目前为止,结果是4位或5位数,这并不理想。我希望结果有两位小数,因为它是钱。期望的输出是7.5,而不是7.5025

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-15 06:21:41

round函数可用于对数字进行舍入:

>>> round(7.5025, 2)
7.5

要获得末尾的额外0,可以使用以下代码:

>>> def round_money(n):
    s = str(round(n, 2))
    if len(s) == 1: # exact dollar
        return s + ".00"
    elif len(s) == 3: # exact x10 cents
        return s + "0"
    return s

>>> round_money(6)
'6.00'
>>> round_money(7.5025)
'7.50'

请注意,此函数返回一个字符串,因为在Python语言中,7.50不能用整数表示。

票数 0
EN

Stack Overflow用户

发布于 2019-04-15 07:02:04

就像已经提供的一种替代方法,你可以对字符串格式做同样的事情(它会截断小数,所以你仍然可以提前舍入):

>>> '{:,.2f}'.format(0)
'0.00'
>>> '{:,.2f}'.format(15342.62412)
'15,342.62'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55680176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档