将价格的整数表示形式转换为双重表示形式

时间:2015-01-09 17:09:35

标签: mysql sql

我有一张名为products的表格。它存储产品名称及其价格。价格以整数的格式存储为美分。

当我选择我的数据时:

  SELECT name, price 
  FROM products

我得到这样的数据:

  Name    Price
  Car     3032
  Banana  178

但我希望数据的格式如下:

  Name    Price
  Car     30,32
  Banan   1,78

这可能吗?我现在只有sum,count.. etc

这样的功能

2 个答案:

答案 0 :(得分:7)

怎么样

SELECT name, price/100 as price FROM products

答案 1 :(得分:1)

我在这里看到的一个大问题是你想使用逗号。我不知道这样做的包装类。但是,可以像这样解决您的问题。通常我会说你应该转换成双倍和分数,但这并不是真的需要。你需要的是一些数学来获得每个数字的价值。

(price - price%1000)/1000

模数将移除不能被1000整除的多余部分。在除法之后,你将给出3个Car例子。一些实现不需要等式的模数部分并且将正确地舍入它。我不想相信这些事情。在第一个数字后,事情变得有点棘手。

在处理数字时,您需要声明4个变量来保存每个位置。如果你想要价格高于99.99你需要更多的地方。假设你有int A,B,C和D.为了简单起见,我还将使用变量temp。

A = (price - price%1000)/1000
temp = price - (A*1000)
B = (temp - temp%100)/100
temp = temp - (B*100)
C = (temp - temp%10)/10
temp = temp - (C*10)
D = temp

使用此过程,您可以将整数的每个位置的数字输入A,B,C和D.在计算该位置后,临时变量会删除该部分。这允许相同的数学函数适用于下一个地方。真的,你可以在没有临时性的情况下做到这一点,但它可能会不必要地混淆你的代码用户(或你自己大声笑)。现在你有了这些地方,你可以将它们零碎地放入你想要的任何输出中。

std::cout<<"$"<<A<<B<<","<<C<<D;

这只是C ++的一个例子。理想情况下,您还要检查是否A,B等。是0,并说明了这一点。