added floats, negative numbers

This commit is contained in:
afonya 2025-06-16 18:51:34 +02:00
parent 8aee85680a
commit cef2217c9e
Signed by: afonya
GPG key ID: EBB9C4CAFAAFB2DC
7 changed files with 79 additions and 82 deletions

View file

@ -19,7 +19,7 @@ pub struct VMMemoryString {
}
#[derive(Debug, Clone)]
pub struct VMMemoryNumber {
pub value: i64,
pub value: f64,
pub variable_id: u32,
}
#[derive(Debug, Clone)]
@ -206,7 +206,7 @@ fn do_operation_operation(registers: &mut Vec<Register>, memory: &mut Vec<VMMemo
result = VMMemory::Number(VMMemoryNumber { value: num1.value * num2.value, variable_id: 0 });
},
13 => {
if num2.value == 0 {
if num2.value == 0.0 {
let err = create_error(&format!("Division by zero"), operation.pos, ErrorType::MathError, ErrorSubType::DivisionByZero);
print_error(&err, &ctx);
process::exit(1);
@ -214,7 +214,7 @@ fn do_operation_operation(registers: &mut Vec<Register>, memory: &mut Vec<VMMemo
result = VMMemory::Number(VMMemoryNumber { value: num1.value / num2.value, variable_id: 0 });
},
14 => {
result = VMMemory::Number(VMMemoryNumber { value: num1.value.pow(num2.value as u32), variable_id: 0 });
result = VMMemory::Number(VMMemoryNumber { value: num1.value.powf(num2.value), variable_id: 0 });
},
15 => {
result = VMMemory::Number(VMMemoryNumber { value: num1.value % num2.value, variable_id: 0 });
@ -428,7 +428,7 @@ impl Machine {
},
4 => {
//LDB
self.memory.push(VMMemory::Boolean(VMMemoryBoolean { value: operation.arg2 != 0, variable_id: 0 }));
self.memory.push(VMMemory::Boolean(VMMemoryBoolean { value: operation.arg2 != 0.0, variable_id: 0 }));
set_register(&mut self.registers, Register { id: operation.arg1, pointer: self.memory.len() - 1 });
},
5 => {
@ -454,7 +454,7 @@ impl Machine {
},
6 => {
//LDN
if operation.arg2 > 0 {
if operation.arg2 > 0.0 {
self.memory.push(VMMemory::Table(VMMemoryTable { values: vec![], variable_id: 0 }));
set_register(&mut self.registers, Register { id: operation.arg1, pointer: self.memory.len() - 1 });
} else {