中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-29 07:06
47,816 主题排行 / 349,916 发帖 / 今日 2 篇 / 48,265 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]命令行下通过四则运算得到绝对值
可打印版本  4,485 / 15
第1楼 everest79 发表于 2007-01-17 12:58
金牌会员 发帖 1,127 积分 2,564
[求助]命令行下通过四则运算得到绝对值
大概如下

set /p a=input
set /a b=算法
%b%为输入数字的绝对值

不使用字符替换或IF判断
第2楼 namejm 发表于 2007-01-17 13:27
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  最简单的办法是用字符串替换语句,演示代码如下:

——————————————————
  居然是不要字符替换的,还不允许用if语句,真是太BT了,不知道你这样要求有什么特殊需要。再来一个:


[ Last edited by namejm on 2007-1-17 at 12:33 AM ]
第3楼 everest79 发表于 2007-01-17 13:42
金牌会员 发帖 1,127 积分 2,564
嘿嘿,版主你作弊,我要通过计算来得到绝对值,想了一下午了
第4楼 redtek 发表于 2007-01-17 22:23
金牌会员 发帖 1,147 积分 2,902
第1种方法: 负负得正原理



计算有小数点儿的数字出错~:)
计算正数出错:)



第2种方法: (负数)-(负数)*2 =(绝对值)



不支持浮点运算。
只支持求负数的绝对值(输入正数则出错)
第5楼 scriptor 发表于 2007-01-17 23:30
银牌会员 发帖 555 积分 1,187
I got one:

@echo off
set /p n="Input any negative number: "
set /a m=~n+1
echo The absolute of %n% is: %m%
pause >nul

It's too easy by using it.

No decimal fraction, but zero is permitted.

[ Last edited by scriptor on 2007-1-17 at 11:16 AM ]
第6楼 qzwqzw 发表于 2007-01-17 23:37
银牌会员 发帖 636 积分 2,343
一个粗劣的例子

a取值的上下限各缩小一半

set /a b=(a*2+1)%%2*a
第7楼 scriptor 发表于 2007-01-17 23:47
银牌会员 发帖 555 积分 1,187
请把它删除了
写错了

[ Last edited by scriptor on 2007-1-17 at 11:14 AM ]
第8楼 scriptor 发表于 2007-01-17 23:51
银牌会员 发帖 555 积分 1,187
请版主把它删除了

[ Last edited by scriptor on 2007-1-17 at 11:12 AM ]
第9楼 qzwqzw 发表于 2007-01-17 23:59
银牌会员 发帖 636 积分 2,343
scriptor兄

给你两个建议

1、多用中文

2、多做测试
第10楼 scriptor 发表于 2007-01-18 00:09
银牌会员 发帖 555 积分 1,187
Originally posted by qzwqzw at 2007-1-17 10:59:
scriptor兄

给你两个建议

1、多用中文

2、多做测试


你是说8楼的代码吗?
对不起,搞错了,那个只能计算奇数

谢谢你了

我一时性急就发过来了
第11楼 qzwqzw 发表于 2007-01-18 00:15
银牌会员 发帖 636 积分 2,343
不尽如此
对于#4中的 ~n+1 代码,不知你是否拿正整数做过测试?

另外保持版面的简洁是我们共同的义务
第12楼 scriptor 发表于 2007-01-18 00:19
银牌会员 发帖 555 积分 1,187
我在那里已经说明了:
@echo off
set /p n="Input any negative number: "
是输入负数。

谢谢。记住了
我发现这几天来我犯了很多的错误啊。
真的不好意思再发帖子了
第13楼 everest79 发表于 2007-01-18 01:13
金牌会员 发帖 1,127 积分 2,564
Originally posted by qzwqzw at 2007-1-17 10:37 AM:
一个粗劣的例子

a取值的上下限各缩小一半

set /a b=(a*2+1)%%2*a


谢谢qzwqzw,看来我把问题复杂化了
第14楼 namejm 发表于 2007-01-18 10:26
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  qzwqzw 的思路不错,PF。
第15楼 tghksj 发表于 2007-01-18 11:38
社区乞丐 发帖 90 积分 -49
轻轻的问一下:

qzwqzw老师

可不可以利用SET的2进制赋值符号进行转换呢??

[ Last edited by tghksj on 2007-1-17 at 10:50 PM ]
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023