java - 如何截断 double 值?

标签 java

我想截断 double 。

例如

double d=3.123456789087654;

如果我想截断到小数点后第10位 结果应该是

result: 3.1234567890

我不需要对结果进行四舍五入

我尝试了自己的功能

     static double truncateDouble(double number, int numDigits) {
    double result = number;
    String arg = "" + number;
    int idx = arg.indexOf('.');
    if (idx!=-1) {
        if (arg.length() > idx+numDigits) {
            arg = arg.substring(0,idx+numDigits+1);
            result  = Double.parseDouble(arg);
        }
    }
    return result ;
 }

但没有得到我想要的适当结果.. 有人可以帮我解决我的问题吗?

java有支持截断不四舍五入的函数吗?

最佳答案

一般来说,你不能,至少不能使用double。原因是许多数字根本无法准确表示,即使它们有少量的小数位。

以0.1为例。最接近的 double 是 0.1000000000000000055511151...并且任何截断都不会给你精确的 0.1。

关于java - 如何截断 double 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15201713/

相关文章:

java - 多类型自定义数组列表

java - 收到 "javax.mail.AuthenticationFailedException: failed to connect"错误

java - 我的 android 项目依赖 httpclient 和 httpMime 无法构建

java - 通过套接字接收文件,TCP 连接卡住

java - 带有自定义 isLoggedIn 参数的 Spring RequestMapping

java - 导出 E4 应用程序

java - Guava Cache 的概率提前过期

java - 在 jsf 页面中使用命令按钮下载文件

java - Applet 与 Servlet

java - 当线程 T1 加入线程 T2 并且 T2 被中断时会发生什么