社区
C#
帖子详情
一个比较难解决的问题 求助高手
cp298674954
2010-09-16 03:18:40
最近在所公司的一个销售系统 经理说要考虑到数据库中的数据类型问题 比如公司现在的产品按个算 所以数量应该用整形 但是要考虑 以后可能会有按公斤算的产品 所以 现在数据库中的INT型字段以后要存成浮点型 希望有一个类 能存储这种数据 在数据类型发生变化的时候 引起软件尽可能小的变化
求解......
...全文
193
20
打赏
收藏
一个比较难解决的问题 求助高手
最近在所公司的一个销售系统 经理说要考虑到数据库中的数据类型问题 比如公司现在的产品按个算 所以数量应该用整形 但是要考虑 以后可能会有按公斤算的产品 所以 现在数据库中的INT型字段以后要存成浮点型 希望有一个类 能存储这种数据 在数据类型发生变化的时候 引起软件尽可能小的变化 求解......
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ztenv
2010-09-17
打赏
举报
回复
[Quote=引用 3 楼 cp298674954 的回复:]
引用 2 楼 lianshaohua 的回复:
改成float就行了;界面上再格式化吧或在业务层格式化;
你的意思就是 Class Product{ public int Price; } 当发生变化的时候 直接 改成 Class Product{ public float Price; } 然后把其他不符合的地方作修改?
[/Quote]
数据库和类中是float,但表现的是整型,没有问题吧?数据的内部形式和表现要分开的;
volunteergg
2010-09-16
打赏
举报
回复
可以用泛型的
ycg_893
2010-09-16
打赏
举报
回复
与数量或金额有关的字段最好不要float类型,因为它不是精确的类型,程序也不要用float类型,而是采用
sql numeric
C# decimal
cactus123456
2010-09-16
打赏
举报
回复
呵呵,和所谓懂技术的老板共事是最郁闷的了,因为天知道是他说的对还是你做的对。
cp298674954
2010-09-16
打赏
举报
回复
[Quote=引用 15 楼 cactus123456 的回复:]
强烈建议先用int,以后出了foalt再说,不然程序员就要失业了
[/Quote]
哈哈 我也想这样 但是 老板会让我现在就失业的。。。。
cactus123456
2010-09-16
打赏
举报
回复
强烈建议先用int,以后出了foalt再说,不然程序员就要失业了
cp298674954
2010-09-16
打赏
举报
回复
[Quote=引用 13 楼 a312983516 的回复:]
引用 6 楼 cp298674954 的回复:
引用 5 楼 porschev 的回复:
数据库用浮点的就是了。。。具体要用的时候再去转化
你的想法是 最开始就是用Float 然后 在用的时候转化成 int? 因为要数据验证啊 之前他是整形的时候 出现 浮点数 是不符合业务逻辑的
你说的数据验证是怎么验证 验证是否为整形? 照我说可以用方法重载啊 多简单 INT一个方法 浮点……
[/Quote]
那要是 有一天 又出现了 Long Double 然后 一个个重载?
a312983516
2010-09-16
打赏
举报
回复
[Quote=引用 6 楼 cp298674954 的回复:]
引用 5 楼 porschev 的回复:
数据库用浮点的就是了。。。具体要用的时候再去转化
你的想法是 最开始就是用Float 然后 在用的时候转化成 int? 因为要数据验证啊 之前他是整形的时候 出现 浮点数 是不符合业务逻辑的
[/Quote]
你说的数据验证是怎么验证 验证是否为整形? 照我说可以用方法重载啊 多简单 INT一个方法 浮点一个方法
cp298674954
2010-09-16
打赏
举报
回复
[Quote=引用 11 楼 linux7985 的回复:]
直接用整型就可以了,如果到到时候要换成公斤的时候,你可以把小数乘100变成整数也是可以存储的嘛
[/Quote]
那以前的数据呢 中等的表里 就有 10W行左右数据 表和表之前还有别的关系 还有无数的存储过程。。。。
烈火蜓蜻
2010-09-16
打赏
举报
回复
直接用整型就可以了,如果到到时候要换成公斤的时候,你可以把小数乘100变成整数也是可以存储的嘛
cp298674954
2010-09-16
打赏
举报
回复
没办法的情况下写出了这样的类
public class BigNumber
{
protected double value = 0;
public virtual double Value
{
get { return value; }
set { this.value = value; }
}
protected BigNumber()
: this(0)
{ }
protected BigNumber(double o)
{
Value = o;
}
public static BigNumber operator +(BigNumber a, BigNumber b)
{
BigNumber reVal = new BigNumber(a.Value + b.Value);
return reVal;
}
public static BigNumber operator -(BigNumber a, BigNumber b)
{
BigNumber reVal = new BigNumber(a.Value - b.Value);
return reVal;
}
public static BigNumber operator *(BigNumber a, BigNumber b)
{
BigNumber reVal = new BigNumber(a.Value * b.Value);
return reVal;
}
public static BigNumber operator /(BigNumber a, BigNumber b)
{
BigNumber reVal = new BigNumber(a.Value / b.Value);
return reVal;
}
public static bool operator ==(BigNumber a, BigNumber b)
{
return a.Value == b.Value;
}
public static bool operator !=(BigNumber a, BigNumber b)
{
return !(a == b);
}
public override bool Equals(object obj)
{
if (!(obj is BigNumber))
{
return false;
}
BigNumber productQuantity = (BigNumber)obj;
return productQuantity.Value.Equals(this.Value);
}
public override string ToString()
{
return Value.ToString();
}
public override int GetHashCode()
{
return Value.GetHashCode();
}
}
-------------------------------------------------------------------------------------
public class VolumeNumber : BigNumber
{
public VolumeNumber() : base(0) { }
public VolumeNumber(double val) : base(val) { }
public override double Value
{
get
{
return (double)(int)this.value;
}
set
{
this.value = (int)value;
if (this.value!=value)
{
throw new FormatException("VolumeNumber类型只可以存储double类型");
}
}
}
}
cp298674954
2010-09-16
打赏
举报
回复
[Quote=引用 7 楼 wuyq11 的回复:]
SQL SERVER numeric类型
decimal
[/Quote]
其实我也想这样 但是老板给我的意思是 要让数据库的类型和软件中的自定义类 降耦合
cp298674954
2010-09-16
打赏
举报
回复
可不可以用自定义类的方法去实现
wuyq11
2010-09-16
打赏
举报
回复
SQL SERVER numeric类型
decimal
cp298674954
2010-09-16
打赏
举报
回复
[Quote=引用 5 楼 porschev 的回复:]
数据库用浮点的就是了。。。具体要用的时候再去转化
[/Quote]
你的想法是 最开始就是用Float 然后 在用的时候转化成 int? 因为要数据验证啊 之前他是整形的时候 出现 浮点数 是不符合业务逻辑的
porschev
2010-09-16
打赏
举报
回复
数据库用浮点的就是了。。。具体要用的时候再去转化
zhanghe100
2010-09-16
打赏
举报
回复
楼上的对
cp298674954
2010-09-16
打赏
举报
回复
[Quote=引用 2 楼 lianshaohua 的回复:]
改成float就行了;界面上再格式化吧或在业务层格式化;
[/Quote]
你的意思就是 Class Product{ public int Price; } 当发生变化的时候 直接 改成 Class Product{ public float Price; } 然后把其他不符合的地方作修改?
ztenv
2010-09-16
打赏
举报
回复
改成float就行了;界面上再格式化吧或在业务层格式化;
sardineany
2010-09-16
打赏
举报
回复
路过,帮顶。。。。
TDengine时序数据库实战
TDengine时序数据库实战
轮胎缺陷检测数据集VOC+YOLO格式2154张4类别.md
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明
一个
重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是
一个
通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
C++高性能计算、系统开发
C++高性能计算、系统开发
在java程序内动态加载表格数据
Spring AI 实现智能对话系统项目
猫箱_1.78.0.apk
猫箱_1.78.0.apk
C#
111,129
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章