我总是被告知永远不要代表钱double或float类型,这次我向你提出问题:为什么?
我确信有一个很好的理由,我根本不知道它是什么.
我一直看到人们在C#中使用双打.我知道我读到某个地方,双打有时会失去精确度.我的问题是什么时候应该使用双倍,何时应该使用小数类型?哪种类型适合货币计算?(即超过1亿美元)
我正在构建一个简单的会计应用程序,用于个人理财.
用户可能会跟踪购买,即将到来的账单,经常性存款等.这将简单易懂.
两个问题:
1)我应该记住哪些建议?显然,我会在适当的地方使用事务,但是正确的数据类型和其他注意事项会很好.
2)您是否知道我可以用来定期从银行获得用户余额的API?即,无论是在Chase,BofA还是其他方面,都可以简化查询帐户的API?
非常感谢,
迈克尔
在SharePoint中,我可以创建"Number"类型的列表列.我需要存储货币金额,并希望能够使用此列类型而不必创建新的列类型.
SharePoint是否存储和操作此类型的值(例如,在列表视图中对值进行求和时)以防止精度损失(即不是某种近似浮点类型)?
我查看了货币列,但它们似乎强制显示一个货币单位,这在我的申请中没有意义(我怀疑它们被存储为发动机罩下的'数字').
如果我在C#或Java中写了25美分的东西,我怎么把它转换为$ .25?
我有一个数据库order,price其deposit字段设置为浮点类型.我也正在实现java gui来搜索订单,问题是当我尝试在数据库中搜索订单时我找不到任何东西,因为当我从字符串转换为float时它节省了价格= 55.0并且在数据库中它保存为55.问题是什么?我应该使用什么类型来表示来自双方,java方面和mysql方面的货币?
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
//collect arguments
String category = this.jTextField8.getText();
String pattern=this.jTextArea1.getText();
String color=this.jTextArea2.getText();
float price = Float.valueOf(this.jTextField14.getText()).floatValue();
float deposit = Float.valueOf(this.jTextField15.getText()).floatValue();
//create new order
int row=this.customerSelectedRow;
Order newOrder=new order(this.customerModel.dataVector.get(row),category,pattern,color,price,deposit);
newOrder.search();
//refresh
this.jDialogNewOrder.setVisible(false);
}catch(Exception e){
System.err.println (" Error message: " + e.getMessage ());
}
}
Run Code Online (Sandbox Code Playgroud)
这是搜索方法的代码
try {
s = c.conn.prepareStatement("SELECT id FROM `"+this.table+
"` WHERE customerId=? AND category=? and pattern=? and color=? and deposit=? and price=?");
s.setInt(1,this.customer.getId());
s.setString …Run Code Online (Sandbox Code Playgroud) 我是java的初学者,面临这个错误.
编写一个名为pay的方法,接受TA工资的实数和TA本周工作小时数的整数,并返回支付TA的金额.例如,看涨期权(5.50,6)应返回33.0.
对于8岁以上的任何小时,TA应该获得1½正常工资的"加班"工资.例如,通话费(4.00,11)应该返回(4.00*8)+(6.00*3)或50.0.
public double pay(double x,int y){
int sum=0;
double hours=8.0;
if(y>hours){
sum=(y-hours)*(1.5*x) + (hours*x);
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
错误:
You have a mismatch between data types. This often occurs when you try to store a real number (double) into a variable or parameter that is an integer (int).
possible loss of precision
found : double
required: int
sum=(y-hours)*(1.5*x) + (hours*x);
^
1 error
19 warnings
但错误指向+号.它出了什么问题?它说发现:双倍.但我希望我的输出是双倍的.但它说需要int.