我toRadians()用来转换值并找到这样的三角函数
dataMain = Math.cos(Math.toRadians(dataSub);
但我有一个问题,如 dataSub = 60
答案应该是0.5
我的程序中的答案0.50000000000001
甚至 dataSub = 30
dataMain = Math.sin(Math.toRadians(dataSub);
在我的程序中回答的是 0.49999999999994
我该如何解决这个问题?
嘿伙计们,我想要舍入到小数点后3位.
我使用了以下代码.
this.hours = Round(hours + (mins / 60), 3);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我哪里出错了?谢谢
我想在Java中将double格式化为2位小数.
我已经阅读了以下帖子: 如何在Java中将数字舍入到n个小数位
出于某种原因,这些方法中的每一种都无法处理我拥有的某些数字.
例如:
DecimalFormat df = new DecimalFormat("#.##");
normalizedValue = Double.valueOf(df.format(normalizedValue));
Run Code Online (Sandbox Code Playgroud)
如果我打印normalizedValue我得到的结果类似于以下内容:
-78.64000000000001
18.97
59.469999999999985
-63.120000000000005
Run Code Online (Sandbox Code Playgroud)
(注意:有些格式正确...有些不是)
所以,这些方法似乎是圆的,但我需要的东西将删除2位小数后的所有小数...任何建议?
谢谢.
我正在学习操作系统编程,我需要假设我的资源很少.
那么我应该如何计算2/3并将其截断为两位小数呢?我可以使用任何数学算法或位操作技巧吗?
我有以下要求来舍入金额:
1.2448 -> 1.25
3.349 -> 3.35
0.474 -> 0.47
Run Code Online (Sandbox Code Playgroud)
我已经尝试了BigDecimal的所有可能模式.setScale(2,RoundingMode.)方法,没有任何成功.结果如下:
UP: 1.25, 3.35, 0.48
HALF_UP: 1.24, 3.35, 0.47
CEILING: 1.25, 3.35, 0.48
FLOOR: 1.24, 3.34, 0.47
DOWN: 1.24, 3.34, 0.47
HALF_DOWN: 1.24, 3.35, 0.47
HALF_EVEN: 1.24, 3.35, 0.47
Run Code Online (Sandbox Code Playgroud)
我也试过使用BigDecimal.round(),结果也不好.
如何以所需方式舍入金额?
编辑:
为什么我真的需要以这种看似奇怪的方式进行回合?
在我们正在开发的新软件中,我们需要重现舍入行为或遗留软件(这是业务需要四舍五入的方式)
解:
我绝对想留下BigDecimals用于我的所有计算.
所以,最后我想出了这个简单的函数来进行"渐进式"舍入:
public static BigDecimal roundAmount(BigDecimal amount) {
for (int i = amount.scale(); i >= 2; i--) {
amount = amount.setScale(i, RoundingMode.HALF_UP);
}
return amount;
}
Run Code Online (Sandbox Code Playgroud) 我有一个存储在文本文件中的双值对角矩阵.
size(file)~410 Mo
Run Code Online (Sandbox Code Playgroud)
我想通过舍入我的双值来减小大小.
如果它是一个好主意,如何在java中做到这一点
0.1706524958886193=>0.17
Run Code Online (Sandbox Code Playgroud)
我需要稍后在matlab中使用这个文件
当我尝试
dlmread(文件)我出现内存不足错误
如何显示任意数字到5位小数.例如0.0至0.00000,12.63至12.63000.
如何显示任何长度为8的数字,例如12.1到12.10000,2.1234567到2.123456
我有Double值 Double val = 49.569632
我怎么能以农达val得到49.57
我使用float来显示十进制数字,但有时它不会显示正确的结果.
例如,对于6.2/1000,结果为0.0061999997.
我知道为什么会这样,但我想知道有没有办法显示正确的结果,在这种情况下,0.0062?
编辑: 如何在Java中将数字舍入到n个小数位不能回答我的问题,那么为什么你在其他地方已经回答了我的问题?
我写的数字只是一个例子.在应用程序中,用户可以输入任意数字并将其与任何其他数字相乘或相乘,因此结果可能没有任何小数点,也许它将有4位小数,也许它将有7位小数,...
可能重复:
如何在Java中将数字舍入到n个小数位
我有像"1234.9678"这样的Double值.我想只返回一个小数,没有舍入或上限.
我用这种方式,但它返回"1234.96"
public double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Double.valueOf(twoDForm.format(d)); }
Run Code Online (Sandbox Code Playgroud)
我只想要"1234.9",
我甚至用这种方式......但没有运气......任何人都可以帮忙吗?
double d = 1234.9678;
int decimalPlace = 1;
BigDecimal bd = new BigDecimal( Double.toString(d) );
bd = bd.setScale( decimalPlace, BigDecimal.ROUND_HALF_UP );
System.out.println( bd.doubleValue() );
Run Code Online (Sandbox Code Playgroud) java ×8
android ×3
bigdecimal ×2
decimal ×2
double ×2
math ×2
rounding ×2
c ×1
file ×1
formatting ×1
matlab ×1
trigonometry ×1