这就是我将双精度数转换为2位小数的方法:
amount = roundTwoDecimals(amount);
public double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Double.valueOf(twoDForm.format(d));
}
Run Code Online (Sandbox Code Playgroud)
如果金额= 25.3569或类似的东西,这很好用,但如果金额= 25.00或金额= 25.0,那么我得到25.0!我想要的是舍入和格式化为2位小数.
我有一个double名为的变量x.在代码中,x获取一个值,0.1我在'if'语句中检查它,比较x和0.1
if (x==0.1)
{
----
}
Run Code Online (Sandbox Code Playgroud)
不幸的是它没有进入if声明
我应该使用Double或double?
这背后的原因是什么?你能为此建议一个解决方案吗?
double x = 1500;
for(int k = 0; k<10 ; k++){
double t = 0;
for(int i=0; i<12; i++){
t += x * 0.0675;
x += x * 0.0675;
}
cout<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;
}
Run Code Online (Sandbox Code Playgroud)
这个输出
Bas ana:3284.78 Son faiz:1784.78 Son ana:5069.55
Bas ana:7193.17 Son faiz:3908.4 Son ana:11101.6
Bas ana:15752 Son faiz:8558.8 Son ana:24310.8
Bas ana:34494.5 Son faiz:18742.5 Son ana:53237
Bas ana:75537.8 Son faiz:41043.3 Son ana:116581
Bas ana:165417 Son faiz:89878.7 Son ana:255295
Bas ana:362238 Son faiz:196821 Son …
我想从一个集合中选择一个随机项目,但是选择任何项目的机会应该与相关的权重成比例
示例输入:
item weight
---- ------
sword of misery 10
shield of happy 5
potion of dying 6
triple-edged sword 1
Run Code Online (Sandbox Code Playgroud)
所以,如果我有4个可能的项目,那么获得任何一个没有权重的项目的机会将是1/4.
在这种情况下,用户获得痛苦之剑的可能性应该是三角剑的10倍.
如何在Java中进行加权随机选择?
在Java中,我想获取一个double值并将其转换为a BigDecimal并将其String值打印到一定的精度.
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
double d=-.00012;
System.out.println(d+""); //This prints -1.2E-4
double c=47.48000;
BigDecimal b = new BigDecimal(c);
System.out.println(b.toString());
//This prints 47.47999999999999687361196265555918216705322265625
}
}
Run Code Online (Sandbox Code Playgroud)
它打印这个巨大的东西:
47.47999999999999687361196265555918216705322265625
并不是
47.48
我正在进行BigDecimal转换的原因有时候,double值会包含很多小数位(即-.000012),将double转换为String时会产生科学记数法-1.2E-4.我想以非科学记数法存储String值.
我想让BigDecimal总是有两个精度单位:"47.48".BigDecimal可以限制转换为字符串的精度吗?
当存储通常格式为44.087585(即在点之前最多2个数字和6dp)的纬度/经度时,我是否需要打扰bigdecimals?
我的问题是,是否保证所有整数值都具有完美的双重表示.
请考虑以下打印"相同"的代码示例:
// Example program
#include <iostream>
#include <string>
int main()
{
int a = 3;
int b = 4;
double d_a(a);
double d_b(b);
double int_sum = a + b;
double d_sum = d_a + d_b;
if (double(int_sum) == d_sum)
{
std::cout << "Same" << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
对于任何架构,任何编译器,任何值a和b?保证这是真的吗?i转换为的任何整数是否double总是表示为i.0000000000000和不表示为,例如,i.000000000001?
我尝试了其他一些数字并且它总是如此,但无法找到关于这是巧合还是设计的任何信息.
注意:这与这个问题(除了语言)不同,因为我添加了两个整数.
是钱,浮动,真实,小数,_________?
我希望绝对值来自负二 - 我认为abs-function 和java一样容易使用 - 但不是!
似乎abs函数返回一个int,因为我的值为3.8951,输出为3.000000
double d1 = abs(-3.8951);
printf("d1: ...%lf", d1);
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?那就是 - 我想要a的绝对值double.
我正面临与转换double为相关的问题float.实际上,我将float类型存储23423424666767在数据库中,但是当我们从下面的代码中获取数据库中的数据时getInfoValueNumeric(),它就是double类型.我们获得的价值在于2.3423424666767E13表格.
那么我们如何获得float格式数据23423424666767呢?
2.3423424666767E13 to 23423424666767
public void setInfoValueNumeric(java.lang.Double value) {
setValue(4, value);
}
@javax.persistence.Column(name = "InfoValueNumeric", precision = 53)
public java.lang.Double getInfoValueNumeric() {
return (java.lang.Double) getValue(4);
}
Run Code Online (Sandbox Code Playgroud)