javascript - How to round a decimal to the nearest 0.5 (0.5, 1.5, 2.5, 3.5) - Stack Overflow

I want to round a number to the nearest 0.5. Not every factor of 0.5, just the 0.5s.For example, 0.5,

I want to round a number to the nearest 0.5. Not every factor of 0.5, just the 0.5s.

For example, 0.5, 1.5, 2.5, -1.5, -2.5. NOT 1, 1.5, 2, 2.5.

I'm confusing myself just explaining it, so here are some examples of expected outputs.

0.678 => 0.5
0.999 => 0.5
1.265 => 1.5
-2.74 => -2.5
-19.2 => -19.5

I have tried the following code with no luck,

let x = 1.296;
let y = Math.round(x);
let z = y + Math.sign(y) * .5; // 1.5 (Correct!)
let x = -2.6;
let y = Math.round(x);
let z = y + Math.sign(y) * .5; // -3.5 (WRONG, should be -2.5)

The code makes sense in my head, but dosen't work for negative numbers. What am I missing that would make this work?

I want to round a number to the nearest 0.5. Not every factor of 0.5, just the 0.5s.

For example, 0.5, 1.5, 2.5, -1.5, -2.5. NOT 1, 1.5, 2, 2.5.

I'm confusing myself just explaining it, so here are some examples of expected outputs.

0.678 => 0.5
0.999 => 0.5
1.265 => 1.5
-2.74 => -2.5
-19.2 => -19.5

I have tried the following code with no luck,

let x = 1.296;
let y = Math.round(x);
let z = y + Math.sign(y) * .5; // 1.5 (Correct!)
let x = -2.6;
let y = Math.round(x);
let z = y + Math.sign(y) * .5; // -3.5 (WRONG, should be -2.5)

The code makes sense in my head, but dosen't work for negative numbers. What am I missing that would make this work?

Share Improve this question asked Jan 12, 2021 at 4:24 Andrew LemonsAndrew Lemons 3421 gold badge3 silver badges7 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 3

First, you can round to integer by

let x = 1.296;
let y = Math.round(x);

Then, you can subtract 0.5 first, then round, then add 0.5

let x = 1.296;
let y = Math.round(x-0.5);
let z = y + 0.5;

function getValue (a){
   var lowerNumber = Math.floor(a);
   console.log(lowerNumber +0.5);
}

getValue(0.678);
getValue(0.999);
getValue(1.265);
getValue(-2.74);
getValue(-19.2);

looks like you want lower full number + 0.5 ;

You can try this logic:

  • Get the decimal part from number.
  • Check if value is positive or negative. Based on this initialise a factor
    • For positive keep it 1
    • For negative keep it -1
  • Multiply 0.5 with factor and add it to decimal

var data = [ 0.678, -0.678, 0.999, 1.265, -2.74, -19.2 ]

const output = data.map((num) => {
  const decimal = parseInt(num)
  const factor = num < 0 ? -1 : 1;
  return decimal + (0.5 * factor)
})

console.log(output)

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744713185a4589462.html

相关推荐

  • 谷歌没有闭源,但正把安卓变得“能看不能摸”

    编辑 | Tina谷歌计划对开发新版 Android 操作系统的方式进行重大变革。在许多人眼中,Android 的开源属性正是选择这款系统的关键理由之一——三星等 OEM 厂商通过对 One UI 等皮肤版本的代码进行自主调整;而密切关

    2小时前
    00
  • 太全面了!顶刊综述教你如何从 PPIs 角度研究癌症

    Basic Information 英文标题:Decoding the functional impact of the cancer genome through protein–protein interactions中文标题:通过蛋白

    2小时前
    00
  • 临床模型

    Basic Information 英文标题:Large language models encode clinical knowledge中文标题:大型语言模型编码临床知识发表日期:12 July 2023文章类型:Article所属期刊

    2小时前
    00
  • 鸿蒙开发:动态添加节点

    前言本文基于Api13做过Android的同学都知道,我们可以拿到任意一个容器组件,比如LinearLayout或者RelativeLayout,或者其他容器视图,我们都可以进行自由的添加子组件,方便我们去处理一些子元素动态变化的场景,然而

    2小时前
    00
  • 客户不付设备款咋整?三菱PLC多期动态密码锁机方法分享

    「三菱 FX5U 系列 PLC 多期动态密码锁机方法详解」上文我们介绍了以西门子 12001500 系列 PLC 为例的 5 种锁机方法,不少朋友反馈这些内容非常实用。今天,我们将聚焦于三菱系列 PLC 的锁机方法。实际上,各类 PLC

    1小时前
    10
  • 什么是PON保护交换?

    随着无源光网络(PON)承载的业务数量不断增加,线路故障后快速恢复服务变得至关重要。PON保护交换技术作为保障业务连续性的核心方案,通过智能冗余机制将网络中断时间缩短至50ms以内,显著提升了网络可靠性。PON保护交换的本质是通过"

    1小时前
    10
  • 从架构创新到多模态探索,MiniMax如何为国产AI持续赋能?

    2025年刚过,中国AI技术在国际舞台上持续闪耀,国产开源模型的集体爆发成为行业焦点。实际上在DeepSeek的开源模型爆火之前,中国的另一家公司MiniMax的MiniMax-01模型就已经发布和开源。目前MiniMax,与DeepSee

    1小时前
    00
  • 开源Python项目:票据设计打印工具

    1 简介大家好我是费老师,市面上的开源票据设计&打印类项目层出不穷,对应所使用到的技术栈也不尽相同。而今天要给大家分享的开源票据设计&打印工具「Dash-Web-Print」,其非常新颖的完全基于Python技术栈实现了前端

    1小时前
    00
  • 谁是 AI 搜索先锋? Elastic 先锋者招募令正式启动!

    在人工智能(正文简称“AI”)技术深刻重构全球产业生态的当下,AI 搜索技术正以革新性力量驱动千行万业智能化跃迁。值此技术变革关键节点,业界领先的搜索分析引擎 Elasticsearch 也迎来了自己 15 年的里程碑,Elastic 公司

    1小时前
    00
  • 深度求索(DeepSeek):以AI之力重塑医疗未来

    在人类历史长河中,医疗技术的每一次突破都深刻改写文明进程。从抗生素的发现到基因编辑技术的诞生,医学的革新始终与人类福祉紧密相连。如今,人工智能(AI)正以前所未有的速度渗透医疗领域,而作为中国AI领域的先锋力量,深度求索(DeepSeek)

    1小时前
    10
  • deepseek+vue3.5+arco+markdown网页版流式AI聊天问答

    半个月之前有发布一篇vite6+deepseek+vant4构建mobile版智能ai对话助手。这次带来实战原创新作Vue3.5+DeepSeek API+Arco搭建网页版AI流式聊天会话小助手。deepseek-vue3-webai实现

    1小时前
    10
  • 初识MySQL · 数据类型

    前言:对于MySQL来说,是一门编程语言,可能定义不是那么的严格,但是对于MySQL来说也是拥有自己的数据类型的,比如tinyint,varchar等,不过通过本章的学习,你就会知道,这里的数据类型其实和C语言中的数据类型挺像的。废话不多说

    1小时前
    00
  • DeepSeek完全征服指南:从代码到多模态,解锁AI助手的终极形态

    代码语言:javascript代码运行次数:0运行复制# DeepSeek 完全使用指南:解锁智能助手的无限潜能*图示:DeepSeek 全景功能示意图*## 目录- [产品定位与核心价值](#产品定位与核心价值)- [五大核心功能全景

    56分钟前
    00
  • 鸿蒙开发:如何实现文本跑马灯效果

    前言本文基于Api13跑马灯的场景非常常见,在日常的开发中常见于消息、广告及公告通知,内容从左到右或者从右到左进行滚动播出,在鸿蒙开发中,实现起来可以说是非常简单,一个属性便可以搞定。比如给定一段内容,让它从右往左进行滚动播出,效果如下:鸿

    51分钟前
    00
  • mysql group by 分组统计

    mysql group by 分组统计在MySQL中,GROUP BY语句通常与聚合函数(如COUNT(), SUM(), AVG(), MAX(), MIN()等)一起使用,以便对一组记录进行分组统计。示例1:计算每个类别的产品数量假设

    45分钟前
    00
  • 鸿蒙开发:信息标记组件

    前言本文基于Api13信息标记,很是常见,比如手机桌面上的各种应用的右上角信息提示,微信的聊天中的消息未读提示等等,可以说非常常见。手机桌面消息提示:微信中的消息未读:如此常见的一个功能,在实际的开发中,我们应该如何来实现呢?当然了,实现方

    24分钟前
    00
  • 训练多模态模型的最佳实践

    训练多模态模型的最佳实践【引言】大家好,我是Echo_Wish,今天咱们来聊聊多模态模型的训练最佳实践。啥是多模态?简单说,就是让模型像人一样,能听、能看、还能读。举个栗子,你给它一张猫的照片,它能告诉你这是一只猫;你再配上“这是一只可

    23分钟前
    00
  • 用AI赋能运维:自动化让维护变得像搭积木一样简单

    用AI赋能运维:自动化让维护变得像搭积木一样简单当今企业的IT系统正面临着前所未有的复杂性和动态变化,从云端服务到海量数据中心,几乎每一秒都充斥着海量日志、指标和告警信息。传统手动巡检和人工排错的方法,往往在应对突发流量、硬件故障、潜在异常

    20分钟前
    00

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信