标题: [数值计算] 带浮点小数的计算 [打印本页]
作者: wesker 时间: 2018-1-18 21:59 标题: 带浮点小数的计算
本帖最后由 wesker 于 2018-1-18 22:13 编辑
请教各位大神如何实现文本文件test.txt内的第四列数据乘以负一,如果没有第四列就不做处理。
原文本文件如下:
101 299.9827 299.9820 0.1000 0.1110 0.0007
102 318.6949 318.7000 0.2000 0.2220 -0.0051
103 25.2855 25.0000 0.5000 0.3330 0.2855
104 25.2855 25.0000 0.5000 0.4440 0.2855
105 25.2855 25.0000 0.6660 0.6660 0.2855
实现转换后变成
101 299.9827 299.9820 0.1000 -0.1110 0.0007
102 318.6949 318.7000 0.2000 -0.2220 -0.0051
103 25.2855 25.0000 0.5000 -0.3330 0.2855
104 25.2855 25.0000 0.5000 -0.4440 0.2855
105 25.2855 25.0000 0.6660 -0.6660 0.2855
求大神帮忙~~
现有的批处理如下,不能实现浮点数的运算,请问如何修改
@echo off
setlocal enabledelayedexpansion
set file="D:test.txt"
set file1="D:\test_ok.txt"
set "fenge= "
cd.>%file1%
for /f "usebackq delims=" %%a in ( %file% ) do (
call set a1=%%a
call :aaa
echo !Text!>>%file1%
)
pause>nul
goto :eof
:aaa
set "Text="
set n=0
for %%b in ( %a1% ) do set /a n+=1
set n1=0
for %%b in ( %a1% ) do (
set /a n1+=1
set x=%%b
if !n1!==4 set /a x=!x!*-1
if !n1! == 1 (
set Text=!x!
) else (
set Text=!Text!%fenge%!x!
)
)
作者: yhcfsr 时间: 2018-1-18 22:24 标题: POWERSHELL
本帖最后由 yhcfsr 于 2018-1-25 13:01 编辑
批处理本身就不能进行浮点运算,这种情况,最好用powershell 脚本进行处理,vbs也行。单纯的bat是难解决你的问题的。更多细节沟通加我QQ33892006
单纯只是加负号也用不了浮点运算,按字符串处理,提取第四列加前面加个负号就行
以下是powershell 脚本,测试前备份源文件- dir -Path $ScDir |%{
- $objContent=Get-Content $_.FullName;
- $result=$null;
- #对第三行做判定
- if ($objContent[2].Split("`t").Count -lt 5) {continue;}
- ForEach($line in $objContent){
- $columns=$line.Split("`t");
- if ($columns[4]) {$columns[4]=((-1)*$columns[4]|%{"{0:0.0000}" -f $_});}
- if ($line.ReadCount -eq 1 ) {$result=( $columns -join "`t")} else {
- $result= $result,( $columns -join "`t") -join "`r`n";
- }
- }
- if ($result) {$result|Out-File -FilePath $_.FullName;}
- }
复制代码
作者: wesker 时间: 2018-1-18 22:34
回复 2# yhcfsr
第四列的数字是正负数都会有
作者: codegay 时间: 2018-1-20 00:24
很多语言中都内置有求绝对数的函数
负(求绝对数)
即可。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |